【问题标题】:converting an ajax returned string to an array of arrays将 ajax 返回的字符串转换为数组数组
【发布时间】:2013-01-03 11:32:12
【问题描述】:

我有一个 AJAX 调用,它返回一个 string,理想情况下应该是一个数组数组

var jsonString = "[['name1', 30, 20], ['name2', 10, 100], ['name3', 140, 130]]";

这就是我得到的回报。我想将其转换为数组数组

var jsonArray = [['name1', 30, 20], ['name2', 10, 100], ['name3', 140, 130]];

显然string.split(",") 不起作用,并给了我一个包含 9 个元素的数组。

我该如何解析这个?

我的小提琴:http://jsfiddle.net/codovations/hgLJh/

【问题讨论】:

    标签: javascript ajax json parsing


    【解决方案1】:

    naveen 我检查了你的字符串,如果你确定你的字符串在数组元素中有 ' 而不是 ",你可以用 " 替换它们,然后你可以将它们解析为 json:

    JSON.parse('[["name1", 30, 20], ["name2", 10, 100], ["name3", 140, 130]]');
    

    返回数组数组。

    问候。

    【讨论】:

    • 酷。我可以做一个 string.replace 并让它工作。哦 javascript 的细微差别...
    【解决方案2】:

    使用JSON.parse()函数:

    var jsonArray = JSON.parse(jsonString);
    

    但请注意,这仅在您传递给它的字符串是有效的 JSON 时才有效。您提供的不是 - JSON 字符串用双引号括起来,而不是单引号。

    【讨论】:

    • 你只是在重复我在小提琴中写的内容。 :)
    • 是的,无效的 JSON。好点!
    • @naveen - 您的小提琴表明您正在使用 jQuery,并且您已经知道答案。问的意义何在?
    • @naveen 我什至没有注意到有 一个 jsFiddle,当我看到足以知道问题的答案时,我就停止了阅读。您需要使用 JSON.parse() 并提供有效的 JSON;如果你知道第一部分,那么第二部分就是你要出错的地方。
    • @naveen 您需要更改处理 AJAX 调用的服务器端代码以返回有效的 JSON,因为您当前返回的内容无效,因此无法使用。 JSON 是将 JavaScript 对象(和数组)表示为字符串的格式,但它有一个非常严格的规范,您必须满足。
    【解决方案3】:

    有了这个字符串,你可以使用:JSON.parse(jsonString.replace(/'/g,'"'))

    【讨论】:

      猜你喜欢
      • 2019-04-24
      • 1970-01-01
      • 2016-04-11
      • 1970-01-01
      • 1970-01-01
      • 2013-05-05
      • 2022-10-17
      • 1970-01-01
      • 2017-11-27
      相关资源
      最近更新 更多