2

无法显示深度嵌套的 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

4

1 回答 1

1

如果您记录您的对象,您可能希望将实际对象转换为字符串。

背景

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

System.out.println(object);

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

问题

在 JavaScript 中:

console.log(object);

[object, object]

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

请注意,这不适用于所有浏览器。例如,Chrome 希望帮助您并以交互方式打印 JSON 值;您可以折叠和取消折叠它。

解决方案

这个问题的解决方案是明确告诉控制台打印一个 json 字符串。您可以通过调用内置 json 对象的函数来对对象进行字符串化来做到这一点。

JSON.stringify(object);

{“内容”:“json”}


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

JSON.stringify(object, null, 4);

印刷:

{
    "content": "json"
}
于 2017-11-17T09:22:04.233 回答