Вложенный объект JSON не отображается при печати

Невозможно показать глубоко вложенные объекты JSON для отображения. Для этого я искал все виды сообщений stackru. Ценю любую помощь в этом вопросе новичка. Я хочу, чтобы он отображал детали JSON Object атлета в массиве атлетов. Появляется как [Объект].

eventUnitResults: [ { is_team: true, athletes: [ [Object], [Object] ] },
  { is_team: true, athletes: [ [Object], [Object] ] } ]

const result = {}
let eventUnitResults = [];
let athletes = [];

for (i=0; i < 2; i++) {
  const athlete = {};
  athlete.athlete_name = 'Ram' + i;
  athlete.athlete_gender = 'M'
  athletes.push(athlete);
}
for (j=0;j < 2;j++) {
  const nestedResult = {};
  nestedResult.is_team = true;
  if (athletes) {
    nestedResult.athletes = athletes;
  }
  console.log('nestedResult:', nestedResult);
  if (nestedResult) {
    eventUnitResults.push(nestedResult);//TODO:
    //eventUnitResults.push(JSON.stringify(nestedResult));//TODO:
  }
}
console.log('eventUnitResults:', eventUnitResults);//<==== how can I get deeply nested values of athletes showing up properly here

if (eventUnitResults) {
  result.event_unit_results = eventUnitResults;
}
console.log('result:', result)

ТИА

1 ответ

Решение

Если вы регистрируете свои объекты, вы можете преобразовать реальный объект в строку.

Фон

Если вы сравните это с Java (или большинство языков):

System.out.println(object);

печатает ваш object.toString(), Если вы не переопределите это, это адрес памяти.

проблема

В JavaScript:

console.log(object);

[object, object]

будет печатать [object, object] потому что он печатает то, что вы печатаете. В этом случае он не знает, что вы ожидаете строку, содержащую JSON.

Обратите внимание, что это относится не ко всем браузерам. Например, Chrome хочет помочь вам и печатает значение JSON в интерактивном режиме; Вы можете свернуть и свернуть это.

Решение

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

JSON.stringify(object);

{"content": "json"}


Для полноты напечатайте объект довольно, установив вывод печати на 4 пробела:

JSON.stringify(object, null, 4);

печатает:

{
    "content": "json"
}
Другие вопросы по тегам