【发布时间】:2009-02-04 19:21:20
【问题描述】:
网站返回以下 JSON 响应,我将如何使用它(在 javascript 中)?
[{"ID1":9996,"ID2":22}]
JSON 只是返回一个数组吗?
【问题讨论】:
-
你用什么平台来消费它?这是网页上的 javascript 代码,还是其他类型的应用程序?
标签: javascript json
网站返回以下 JSON 响应,我将如何使用它(在 javascript 中)?
[{"ID1":9996,"ID2":22}]
JSON 只是返回一个数组吗?
【问题讨论】:
标签: javascript json
我们使用:
function evalResponse(response) {
var xyz123 = null;
eval("xyz123 = " + response);
return xyz123;
}
另一种方法是简单地使用:
var myObj = eval(response);
基本上,您必须在响应上调用eval() 才能创建一个javascript 对象。这是因为当您从 AJAX 调用中获取响应时,响应本身只是一个字符串。在你eval它之后,你就有了一个可以操作的对象。
function myCallback(response) {
var myObj = evalResponse(response);
alert(myObj.ID1);
}
您可以使用 javascript 库为您处理此问题。或者,您可以尝试自己解析字符串。 eval() 有它自己的问题,但它有效。
【讨论】:
如果你使用http://www.JSON.org/json2.js,你可以使用它的方法 JSON.parse 来检索 json string 作为一个对象(不使用 eval(这被认为是邪恶的)),所以在这种情况下你会使用:
var nwObj = JSON.parse('[{"ID1":9996,"ID2":22}]');
alert(nwObj.ID1); //=> 9996
【讨论】:
它看起来像一个数组,其中一个对象包含两个属性。我更希望看到像这样结构化的相同数据:
{"ID":[9996,22]}
然后你有一个对象包含一个包含两个元素的数组,这似乎更适合呈现的数据。然后使用 Endangered 的 evalResponse() 代码,您可以像这样使用它:
var responseObj = evalResponse(response);
// responseObj.ID[0] would be 9996, responseObj.ID[1] would be 22
【讨论】:
我认为其他答案可能无法回答您的问题,也许您正在寻找一种使用“1 个对象的数组”的方法。也许这会有所帮助:
var arr = [{"ID1":9996,"ID2":22}];
var obj = arr[0];
var id1 = obj.ID1;
var id2 = obj.ID2;
【讨论】:
以下是您获取数据的方式:
<script type="text/javascript" >
var something = [{"ID1":9996,"ID2":22}]
alert(something[0].ID1)
</script>
【讨论】:
您发布的 JSON 表示一个包含一个对象的数组,该对象具有属性 ID1 和 ID2(初始化为冒号后的相应值)。
要将字符串转换为 javascript 对象,请将其传递给 eval,如下所示:
var obj = eval('[{"ID1":9996,"ID2":22}]');
但是,如果您只有一个对象而不是数组,则此方法将失败,因此将其括在括号中会更安全:
var obj = eval('(' + jsonResponse + ')');
【讨论】: