JSON and Data Shapes
Parsing Fields
Read fields from JSON text.
json-parse-fields
`JSON.parse` turns JSON text back into JavaScript data. After parsing, code can read fields by name.
Parsing Fields
json_parse_fields.js
Replay: real traced execution (multi-file project)
const sourceName = "Ada";
const text = "{\"name\":\"" + sourceName + "\",\"level\":3}";
const name = JSON.parse(text).name;
const level = JSON.parse(text).level;
console.log("name=" + name);
console.log("level=" + level);
const sourceName = "Bo";
const text = "{\"name\":\"" + sourceName + "\",\"level\":3}";
const name = JSON.parse(text).name;
const level = JSON.parse(text).level;
console.log("name=" + name);
console.log("level=" + level);
const sourceName = "Cy";
const text = "{\"name\":\"" + sourceName + "\",\"level\":3}";
const name = JSON.parse(text).name;
const level = JSON.parse(text).level;
console.log("name=" + name);
console.log("level=" + level);
sourceName ← Ada, text ← {"name":"Ada","level":3}, name ← Ada
1const sourceName→ Ada = "Ada"; //@sourceName="Bo", "Cy"2const text→ {"name":"Ada","level":3} = "{\"name\":\"" + sourceName→ Ada + "\",\"level\":3}";3const name→ Ada = JSON.parse(text{"name":"Ada","level":3}).name;4const level→ 3 = JSON.parse(text{"name":"Ada","level":3}).level;56console.log("name=" + nameAda);7console.log("level=" + level3);outputname=Ada level=3
sourceName ← Bo, text ← {"name":"Bo","level":3}, name ← Bo, level ← 3
1const sourceName→ Bo = "Bo";2const text→ {"name":"Bo","level":3} = "{\"name\":\"" + sourceName→ Bo + "\",\"level\":3}";3const name→ Bo = JSON.parse(text{"name":"Bo","level":3}).name;4const level→ 3 = JSON.parse(text{"name":"Bo","level":3}).level;56console.log("name=" + nameBo);7console.log("level=" + level3);outputname=Bo level=3
sourceName ← Cy, text ← {"name":"Cy","level":3}, name ← Cy, level ← 3
1const sourceName→ Cy = "Cy";2const text→ {"name":"Cy","level":3} = "{\"name\":\"" + sourceName→ Cy + "\",\"level\":3}";3const name→ Cy = JSON.parse(text{"name":"Cy","level":3}).name;4const level→ 3 = JSON.parse(text{"name":"Cy","level":3}).level;56console.log("name=" + nameCy);7console.log("level=" + level3);outputname=Cy level=3