嵌套的JSON对象在打印时不显示

时间:2017-11-14 07:29:43

标签: javascript json nest-nested-object

无法显示深层嵌套的JSON对象以显示。已经查看了各种stackoverflow帖子。感谢对这个新手问题的任何帮助。我想让它在运动员阵列中显示运动员JSONObject的细节。 它显示为[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)

TIA

1 个答案:

答案 0 :(得分:1)

如果您记录对象,则可能需要将实际对象转换为字符串。

背景

如果将其与java(或大多数语言)进行比较:

System.out.println(object);

打印您的object.toString()。除非你覆盖它,否则就是内存地址。

问题

在JavaScript中:

console.log(object);
  

[object, object]

会打印[object, object],因为它会打印您正在打印的内容。在这种情况下,它不知道您期望包含JSON的String。

注意这不适用于所有浏览器。例如,Chrome希望帮助您以交互方式打印JSON值;你可以崩溃并解开它。

解决方案

此问题的解决方案是明确告诉控制台打印json字符串。您可以通过调用内置json对象的函数来对对象进行字符串化来完成此操作。

JSON.stringify(object);
  

{“content”:“json”}

为完整起见,通过将打印输出设置为4个空格缩进来打印对象:

JSON.stringify(object, null, 4);

打印:

{
    "content": "json"
}