【问题标题】:how to parse an associative array through json in javascript如何在javascript中通过json解析关联数组
【发布时间】:2012-09-10 16:42:23
【问题描述】:

我有一个二维 php 数组,我通过 JSON 进行编码。我在 php 中的二维数组是这样的:

$array['A'][12] = 8;
$array['A'][8] = 21;

$array['B'][17] = 19;
$array['B'][9] = 12;

当我执行echo json_encode($array); 并将其作为 Ajax xmlhttp.responsetext 进行警报时,我会在我的警报框中得到这个:{"A":{"12":"8","8":"21"},"B":{"17":"19","9":"12"}}

这绝对没问题。现在我需要用 javascript 解析它,所以我使用了 JSON.parse() 函数。问题是当我访问字符串的 A 和 B 字段时。我在我的警报框中得到了这个:Object object。如何解析这个关联数组?我是 AJAX 和 JSON 的初学者,所以请帮忙。

【问题讨论】:

  • B 和 A 一样是一个对象,你需要写 response.A["12"] 来得到 "8"

标签: javascript ajax json multidimensional-array


【解决方案1】:
var array = JSON.parse(yourResponseData);

array.A // Object
array.A['12'] //8

您不能通过点语法访问键 '12',因为变量名不能以数字开头。

【讨论】:

  • 但是当我这样做var parsedJSON = JSON.parse(xmlHttp.responseText); alert(parsedJSON.A[8]);我在警告框中得到'未定义':(
  • 使用引号,否则将被视为第八个元素:alert(parsedJSON.A["8"]);
  • 有没有一种方法可以将对象 A 和对象 B 的所有键存储在 2 个不同的变量中?
  • 你的意思是像 var a = array.A, b = array.B; ???还是只是钥匙?试试 for(key in array.A){console.log(array.A[key]);}
  • 我的意思是我想将对象 A 的所有键(即 12 和 8)存储在一个变量中
【解决方案2】:

您可以使用 console.log() 而不是 alert() 来查看解析后的 json 对象的完整结构。 您可以使用 轻松检索该值。符号或 [] 括号: 例如:

var returned = JSON.parse(tran.responseText);
console.log(returned['A']['8']); //which should give you '21' based on your case

【讨论】:

    猜你喜欢
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多