如何在Javascript和HTML中格式化JSON?
How to format JSON in Javascript and HTML?
对于下面的GoogleJSON-LD
结构...
<script type="application/ld+json" id="datablock-1">
{
"@context": "http://schema.org/",
"@type": "Person",
"honorificPrefix": "Dr",
"givenName": "Albert",
"familyName": "Einstein",
"honorificSuffix": "PhD",
"jobTitle": "Professor of Physics",
"worksFor": [ {
"@type": "EducationalOrganization",
"department": "School of Science",
"parentOrganization": "Princeton University",
"address": [ {
"@type": "PostalAddress",
"streetAddress": "One Relativity Way",
"addressCountry": "USA" } ]
} ]
}
</script>
这个 HTML
+ JavaScript
有效:
<body>
<dl><dt>Big Ideas</dt><dd id="dd-1"></dd></dl>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
var data = $("#datablock-1").html();
var json = JSON.parse(data);
var people = json["worksFor"];
for (i=0; i<=people.length; i++) {
var a=json["givenName"];
var b=json["familyName"];
var c=json["honorificSuffix"];
var d=json["worksFor"][i]["parentOrganization"];
$('#dd-1').append("<dd>"+a+" "+b+", "+c+". "+" "+d+"."+" "+"</dd>");
}
</script>
</body>
现在我需要在对象中更深入一层并添加有关 "@type": "PostalAddress"
的信息。
但是这个 HTML
+ JavaScript
不起作用:
<body>
<dl><dt>Big Ideas</dt><dd id="dd-1"></dd></dl>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
var data = $("#datablock-1").html();
var json = JSON.parse(data);
var people = json["worksFor"]["address"];
for (i=0; i<=people.length; i++) {
var a=json["givenName"];
var b=json["familyName"];
var c=json["honorificSuffix"];
var d=json["worksFor"][i]["parentOrganization"];
var e=json["worksFor"]["address"][i]["streetAddress"];
$('#dd-1').append("<dd>"+a+" "+b+", "+c+". "+" "+d+"."+" "+e+"</dd>");
}
</script>
</body>
我做错了什么?如何更正错误?
此行失败:
people = json["worksFor"]["address"]
你最终 people
为 undefined
,原因是 json["worksFor"]
给你数组。
你不会直接从顶部跳到邮政地址,而不改变条件吗?我已将您的 people
变量名称更改为 worksFor
因为这是您要迭代的内容,因为它看起来不像您有 atm 人员列表。也许我错了?
<body>
<dl><dt>Big Ideas</dt><dd id="dd-1"></dd></dl>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
var data = $("#datablock-1").html();
var json = JSON.parse(data);
var worksFor= json["worksFor"];
for (i=0; i<=worksFor.length; i++) {
var a=json["givenName"];
var b=json["familyName"];
var c=json["honorificSuffix"];
var d=json["worksFor"][i]["parentOrganization"];
var e=json["worksFor"][i]["address"][0]["streetAddress"];//this line is changed
$('#dd-1').append("<dd>"+a+" "+b+", "+c+". "+" "+d+"."+e+"</dd>");
}
</script>
</body>
这对我来说很好...
var json = {
"@context": "http://schema.org/",
"@type": "Person",
"honorificPrefix": "Dr",
"givenName": "Albert",
"familyName": "Einstein",
"honorificSuffix": "PhD",
"jobTitle": "Professor of Physics",
"worksFor": [ {
"@type": "EducationalOrganization",
"department": "School of Science",
"parentOrganization": "Princeton University",
"address": [ {
"@type": "PostalAddress",
"streetAddress": "One Relativity Way",
"addressCountry": "USA" } ]
} ]
}
json = JSON.parse(json);
json.worksFor[0].address[0]["@type"].PostalAddress.address = 'streetAddress'
对于下面的GoogleJSON-LD
结构...
<script type="application/ld+json" id="datablock-1">
{
"@context": "http://schema.org/",
"@type": "Person",
"honorificPrefix": "Dr",
"givenName": "Albert",
"familyName": "Einstein",
"honorificSuffix": "PhD",
"jobTitle": "Professor of Physics",
"worksFor": [ {
"@type": "EducationalOrganization",
"department": "School of Science",
"parentOrganization": "Princeton University",
"address": [ {
"@type": "PostalAddress",
"streetAddress": "One Relativity Way",
"addressCountry": "USA" } ]
} ]
}
</script>
这个 HTML
+ JavaScript
有效:
<body>
<dl><dt>Big Ideas</dt><dd id="dd-1"></dd></dl>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
var data = $("#datablock-1").html();
var json = JSON.parse(data);
var people = json["worksFor"];
for (i=0; i<=people.length; i++) {
var a=json["givenName"];
var b=json["familyName"];
var c=json["honorificSuffix"];
var d=json["worksFor"][i]["parentOrganization"];
$('#dd-1').append("<dd>"+a+" "+b+", "+c+". "+" "+d+"."+" "+"</dd>");
}
</script>
</body>
现在我需要在对象中更深入一层并添加有关 "@type": "PostalAddress"
的信息。
但是这个 HTML
+ JavaScript
不起作用:
<body>
<dl><dt>Big Ideas</dt><dd id="dd-1"></dd></dl>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
var data = $("#datablock-1").html();
var json = JSON.parse(data);
var people = json["worksFor"]["address"];
for (i=0; i<=people.length; i++) {
var a=json["givenName"];
var b=json["familyName"];
var c=json["honorificSuffix"];
var d=json["worksFor"][i]["parentOrganization"];
var e=json["worksFor"]["address"][i]["streetAddress"];
$('#dd-1').append("<dd>"+a+" "+b+", "+c+". "+" "+d+"."+" "+e+"</dd>");
}
</script>
</body>
我做错了什么?如何更正错误?
此行失败:
people = json["worksFor"]["address"]
你最终 people
为 undefined
,原因是 json["worksFor"]
给你数组。
你不会直接从顶部跳到邮政地址,而不改变条件吗?我已将您的 people
变量名称更改为 worksFor
因为这是您要迭代的内容,因为它看起来不像您有 atm 人员列表。也许我错了?
<body>
<dl><dt>Big Ideas</dt><dd id="dd-1"></dd></dl>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
var data = $("#datablock-1").html();
var json = JSON.parse(data);
var worksFor= json["worksFor"];
for (i=0; i<=worksFor.length; i++) {
var a=json["givenName"];
var b=json["familyName"];
var c=json["honorificSuffix"];
var d=json["worksFor"][i]["parentOrganization"];
var e=json["worksFor"][i]["address"][0]["streetAddress"];//this line is changed
$('#dd-1').append("<dd>"+a+" "+b+", "+c+". "+" "+d+"."+e+"</dd>");
}
</script>
</body>
这对我来说很好...
var json = {
"@context": "http://schema.org/",
"@type": "Person",
"honorificPrefix": "Dr",
"givenName": "Albert",
"familyName": "Einstein",
"honorificSuffix": "PhD",
"jobTitle": "Professor of Physics",
"worksFor": [ {
"@type": "EducationalOrganization",
"department": "School of Science",
"parentOrganization": "Princeton University",
"address": [ {
"@type": "PostalAddress",
"streetAddress": "One Relativity Way",
"addressCountry": "USA" } ]
} ]
}
json = JSON.parse(json);
json.worksFor[0].address[0]["@type"].PostalAddress.address = 'streetAddress'