【问题标题】:Javascript: Parse JSON output resultJavascript:解析 JSON 输出结果
【发布时间】:2013-07-18 05:53:46
【问题描述】:

如何使用 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

【问题讨论】:

  • 你能发布你尝试过的东西吗?
  • someone 周围没有引号;这不是 JSON 响应。它是 JYON:类似于 json 的你自己的符号。
  • @AlexPuchkov 更新了我尝试过的代码
  • 确保您在 $.ajax 调用中提供了“json”数据类型
  • @Natsume 你能更清楚地解释你的问题吗,因为我的回答解释了你最初的问题,但我不确定它是否真的是你想要的

标签: javascript json parsing


【解决方案1】:
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's answer 说得最好。

【讨论】:

  • 我编辑了我的答案以包含 JSON.parse 你是如何推断出这确实是 OP 想要的
  • @aaronman 如果您在 JS 中将字符串转换为对象,那是唯一真正的方法。大多数其他方法(包括 jQuery 的 $.ajax)本身都使用 JSON.parse。在这种特殊情况下,OP 没有提供足够的信息,但有根据的猜测是 @@Natsume 确实在使用 $.ajax,而且很可能 XHR 的参数丢失了某些东西,或者 PHP 服务器正在返回错误的内容类型,返回的“对象”实际上是一个字符串。 H/W 这个问题是关于解析的,而不是关于 XHR,因此我的回答。
  • 有点晚了,显然 JSON.parse 不是他想要的,老实说,我仍然不确定他想要什么我还是把你 UV 了
【解决方案2】:

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

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 字符串。执行此操作的标准方法是使用JSON.parse,请记住,仅当数据是字符串时才需要这样做。这就是应该这样做的方式。

var obj = JSON.parse(" [ [ "102", true, { "username" : someone } ] ] ")

【讨论】:

  • 你答对了!但是由于 Firefox 的 SDK,我不能使用 JSON.parse,所以我做了 dt = obj.json[0][2],我想当我做 dt.username 时控制台会说“未定义”,但我我确定响应请求 URL 期间出现错误,我确定我可以管理 URL 错误部分。为你 +1:D
  • @Natsume 在您的原始帖子中看起来 someone 是一个变量,必须为 JSON 工作定义它
  • 哎呀,这应该是字符串,我忘了包括“” D:。修复它:P
【解决方案3】:

这取决于您从哪里获取 JSON:

如果你使用 jQuery

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

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

那么你可以这样做:

var jsonVar = JSON.parse(xhReq.responseText);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 2014-03-23
    • 1970-01-01
    相关资源
    最近更新 更多