【发布时间】:2013-02-19 00:54:05
【问题描述】:
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。
有什么建议吗?
【问题讨论】:
-
使用
var str = '';,然后使用str += 'David Smith';,您应该避免使用未定义的David Smith。 -
我使用的是 eval 而不是 JSON.parse — 如果你需要一个 shiv,获取 json2.js,不要使用 eval。
-
从哪里获得 json2.js?我想这是一个 json 解析器脚本?
-
@Quentin - 我找到了 json2.js,我像这样使用它: var json_data = JSON.stringify(obj);把json数据变成数组?
-
没有。您正在解析 JSON 文本,而不是将对象转换为一个对象。
var inflated_from_json = JSON.parse(string_of_json_text);
标签: javascript arrays json for-loop