1

杰森:

[{"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。

有什么建议么?

4

1 回答 1

3

的初始值为stringundefined字符串化后变为"undefined"

所以string += obj[i].Name etc etc意味着string = "undefined" + obj[i].Name etc etc

string初始化时分配一个空字符串。

var string = "";

我读到这是因为长度不能用于 json 对象,因此您必须转换为数组。

“json 对象”是一个非常无用的术语。

JSON对象是浏览器提供的具有解析和序列化方法的对象。

JSON 文本是一段 JSON,通常被误认为是“对象”。

JSON 中的对象是具有命名键和值的数据结构。

如果您将 JSON 文本解析为 JavaScript(这就是您正在做的事情eval),那么您将获得一个 JavaScript 数据结构。如果你访问length一个对象的属性,那么undefined除非你给它一个length属性,否则它将是。外部数据结构是一个数组,这就是您要循环的内容。数组确实length属性(等于数组上最大整数键名的值)。

于 2013-03-04T19:56:02.883 回答