¿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í.

  • ¿Incrustar V8 en la aplicación OpenCL?
  • ¿Por qué el nodo no evalúa Math.tan (Math.PI / 2) a Infinity, pero Chrome V8 sí?
  • Problema de SetTimeout en Node.js
  • Javascript: bajo performance en V8 de funciones agregadas a String.prototype?
  • ¿Cómo expone una class de C ++ en el motor de Javascript de V8 para que pueda crearse utilizando new?
  • Construcciones / patrones de JavaScript para evitar en iOS Safari
  • ¿Por qué no node.js tiene un DOM nativo?
  • ¿Dónde puedo ver el código fuente de los methods de JavaScript, como hasOwnProperty, en Node.js?
  • ¿Por qué llamar a un método en un object literal es más lento en V8?
  • ¿La recolección de basura de JavaScript de Chrome funciona de manera diferente?
  • ¿Cómo afectan los diversos proyectos de optimization de Javascript el performance de DOM?
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.