简体   繁体   中英

Nested JSON Object not showing up when printing it

Not able to show deeply nested JSON Objects to show up.Have been looking at all kinds of stackoverflow posts for this. Appreciate any help on this newbie question. I want it to show details of the athlete JSONObject within the athletes array. It shows up like [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

If you log your objects, you might want to convert the actual object to a string.

Background

If you compare this to java (or most languages):

System.out.println(object);

prints your object.toString() . Unless you override it, that's the memory address.

Problem

In JavaScript:

console.log(object);

[object, object]

would print [object, object] because it prints WHAT you are printing. In this case, it does not know that you expect a String containing JSON.

Note this does not apply to all browsers. Chrome, for example, wants to help you out and prints the JSON value interactively; you can collapse and uncollapse it.

Solution

The solution to this problem, is telling the console explicitly to print a json string. You can do this by calling the build-in json object's function to stringify an object.

JSON.stringify(object);

{ "content": "json" }


For completeness, print the object pretty by setting the print output to 4 spaces indentation:

JSON.stringify(object, null, 4);

prints:

{
    "content": "json"
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM