Подтвердить что ты не робот

Как проверить, что JSON пуст в NodeJS?

У меня есть функция, которая проверяет, имеет ли запрос какие-либо запросы, и делает ли это разные действия. В настоящее время я if(query) делаю это еще что-то еще. Однако, похоже, что когда нет данных запроса, в итоге я получаю объект {} JSON. Поэтому мне нужно заменить if(query) на if(query.isEmpty()) или что-то в этом роде. Может ли кто-нибудь объяснить, как я могу это сделать в NodeJS? Имеет ли объект V8 JSON какие-либо функциональные возможности этого типа?

4b9b3361

Ответ 1

Вы можете использовать любую из следующих функций:

// 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;
}

Пример использования:

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

Ответ 2

Вы можете использовать это:

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

или это:

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

Вы также можете использовать это:

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

  return true;
}

Если вы используете underscore или jQuery, вы можете использовать их isEmpty или isEmptyObject.

Ответ 3

в конце игры, но я использую другой способ, который мне больше нравится, даже если это не "правильное" решение.

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

Я знаю, что этот подход может привести к плохим отзывам, потому что я предполагаю, что строковое представление пустого объекта {} (и что если оно было { }) - но мне легче это сделать без функции, и кажется, что работаю хорошо для меня.