JSON:
[{"Name":"David Smith","ClaimNum":"123456789","Site":"SomeSite","ServiceDate":"2013-02-27","Program":"3","ServiceType":"168","ReportType":"ReportTypeHere","program":"Some Program 1","type":"ServiceTypeHere"},{"Name":"David Smith","ClaimNum":"123456789","Site":"SomeSite","ServiceDate":"2013-02-27","Program":"3","ServiceType":"168","ReportType":"ReportTypeHere","program":"Some Program 1","type":"ServiceTypeHere"}]
使用Javascript:
var obj = eval ("(" + jsonString+ ")");
var string;
for(i=0; i < obj.length; i++){
string += obj[i].Name + " - " + obj[i].ClaimNum + " - " + obj[i].Site + " - " + obj[i].ServiceDate + " - " + obj[i].program + " - " + obj[i].type + "<br/>";
}
我使用的是eval而不是JSON.parse,因为我们使用的一些较旧的Web浏览器不支持JSON.parse:(
现在,当我这样做时,这确实有效:
document.getElementById("results").innerHTML = string;
第一个条目有:
undefinedDavid Smith
我读到这是因为长度无法在json对象上使用,因此必须转换为数组。我以为eval会这样吗?
我很茫然,并希望使用直接的javascript。但是,如果没有其他方法,我可以使用JQUERY。
任何建议?
答案 0 :(得分:3)
string
的初始值为undefined
,字符串化后变为"undefined"
。
所以string += obj[i].Name etc etc
表示string = "undefined" + obj[i].Name etc etc
初始化时,将空字符串分配给string
。
var string = "";
我读到这是因为长度无法在json对象上使用,因此必须转换为数组。
“json object”是一个非常无益的术语。
JSON
对象是由具有解析和序列化方法的浏览器提供的对象。
JSON文本是一段JSON,经常被误认为是“对象”。
JSON中的对象是具有命名键和值的数据结构。
如果您将JSON文本解析为JavaScript(这是您使用eval
进行的操作),那么您将获得JavaScript数据结构。如果您访问对象的length
属性,那么除非您为其提供undefined
属性,否则它将为length
。外部数据结构是数组,这就是你要循环的内容。数组 do 具有length
属性(等于数组中最高整数键名的值)。