2

如何使用 javascript 从此类 JSON 响应中检索值,我尝试了正常的 JSON 解析似乎不起作用

[["102",true,{"username":"someone"}]]

尝试了以下代码:

url: "http://somewebsite.com/api.php?v=json&i=[[102]]",
onComplete: function (response) {
var data = response.json[0];
console.log("User: " + data.username); // doesnt work
4

3 回答 3

4
var str = '[["102",true,{"username":"someone"}]]';
var data = JSON.parse(str);
console.log("User: " + data[0][2].username);
  1. someone双引号括起来
  2. 在尝试访问username属性之前遍历数组数组

如果您使用 AJAX 获取数据,@Alex Puchkov 的回答说得最好。

于 2013-07-19T04:17:39.880 回答
3

所以这个问题是它看起来像一个数组中的一个数组。所以要访问一个元素,你会做这样的事情。

console.log(obj[0][0]);  

应该打印102

假设您像这样创建了对象:

var obj = [["102",true,{"username":someone}]];  

这是您访问每个元素的方式:

obj[0][0]102

obj[0][1]true
并且obj[0][2]["username"]是任何someone被定义为

从其他人的回答看来,您可能遇到的一些问题是解析 JSON 字符串。执行此操作的标准方法是 use JSON.parse,请记住,仅当数据是字符串时才需要这样做。这就是应该这样做的方式。

var obj = JSON.parse(" [ [ "102", true, { "username" : someone } ] ] ")
于 2013-07-19T03:41:33.823 回答
3

这取决于您从何处获取 JSON:

如果你使用 jQuery

然后 jQuery 将解析 JSON 本身并将 JavaScript 变量发送给回调函数。确保在 $.ajax 调用中提供正确的 dataType 或使用 $.getJSON() 等辅助方法

如果您通过纯 AJAX 获取 JSON 数据

那么你可以这样做:

var jsonVar = JSON.parse(xhReq.responseText);
于 2013-07-19T03:45:03.330 回答