¿Cómo puedo verificar si un JSON está vacío en NodeJS?

Tengo una function que comtesting si una request tiene alguna consulta o no, y hace diferentes acciones basadas en eso. Actualmente, tengo if(query) hago esto else algo más. Sin embargo, parece que cuando no hay datos de consulta, termino con un {} object JSON. Como tal, necesito replace if(query) con if(query.isEmpty()) o algo por el estilo. ¿Alguien puede explicar cómo podría hacer esto en NodeJS? ¿El object JSON V8 tiene alguna funcionalidad de este tipo?

3 Solutions collect form web for “¿Cómo puedo verificar si un JSON está vacío en NodeJS?”

Puede usar cualquiera de estas funciones:

 // This should work in node.js and other ES5 compliant implementations. function isEmptyObject(obj) { return !Object.keys(obj).length; } // This should work both there and elsewhere. function isEmptyObject(obj) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { return false; } } return true; } 

Ejemplo de uso:

 if (isEmptyObject(query)) { // There are no queries. } else { // There is at least one query, // or at least the query object is not empty. } 

Puedes usar esto:

 var isEmpty = function(obj) { return Object.keys(obj).length === 0; } 

o esto:

 function isEmpty(obj) { return !Object.keys(obj).length > 0; } 

También puedes usar esto:

 function isEmpty(obj) { for(var prop in obj) { if(obj.hasOwnProperty(prop)) return false; } return true; } 

Si usa subrayado o jQuery , puede usar sus llamadas isEmpty o isEmptyObject .

al final del juego, pero estoy usando otra manera que me gusta más, incluso si no es una solución "adecuada".

 JSON.stringify(obj) === '{}' 

Sé que este enfoque podría tener malas críticas porque supongo que la representación de cadena de objects vacíos es {} (y qué pasaría si { } ), pero me resulta más fácil de esta manera sin una function y parece funcionar bien para mí.

  • Recolectar basura lleva demasiado time en mi aplicación JS en time real
  • Almacenamiento en caching de código de object de JavaScript: ¿cuál de estas afirmaciones es incorrecta?
  • Formato de cadena NodeJS como Python?
  • ¿Por qué atar es más lento que un cierre?
  • Consumo de memory de NodeJS en un ciclo infinito
  • cómo crear objects globales REALES en v8?
  • ¿Debo preocuparme por limpiar objects grandes en Node.js o dejarlos para el recolector de basura?
  • ¿Las funciones de flecha son más rápidas (más performance, más livianas) que la statement de function autónoma común en v8?
  • ¿Nodo.js es una alternativa viable a los lenguajes de scripting tradicionales como Perl y Python?
  • ¿Cuál es la diferencia entre setInterval (func) y setInterval (function () {func ()})
  • ¿La recolección de basura de JavaScript de Chrome funciona de manera diferente?
  • El motor V8 comstack JavaScript para código de máquina. Entonces, ¿por qué node.js no es más rápido que C?
  • ¿Cuál es el problema con la optimization de arguments?
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.