将AJAX字符串返回到数组

时间:2019-01-02 19:05:46

标签: javascript arrays ajax string

这就是我所拥有的。我有一个AJAX调用,返回的是这样的字符串(data.d):

{"id": "03100500", "name": "Book I"},{"id": "03100507", "name": "Book I - ALT"},{"id": "03100505", "name": "Book I - M"},{"id": "03100600", "name": "Book II"}

我尝试过:

var books = JSON.parse(data.d);

基本上收到错误“ JSON中出现未捕获的SyntaxError:意外令牌”

我想要的最终结果:

var newArray = [{"id": "03100500", "name": "Book I"},{"id": "03100507", "name": "Book I - ALT"},{"id": "03100505", "name": "Book I - M"},{"id": "03100600", "name": "Book II"}]

甚至不确定是否可能

2 个答案:

答案 0 :(得分:4)

没有数组定界符,该字符串不是有效的JSON。给定没有数组定界符的字符串,您可以在解析之前添加它们:

let s = `{"id": "03100500", "name": "Book I"},{"id": "03100507", "name": "Book I - ALT"},{"id": "03100505", "name": "Book I - M"},{"id": "03100600", "name": "Book II"}`

// make new string with `[]` delimiters:
let o = JSON.parse('[' + s + ']')
console.log(o)

如果该值将以更复杂的方式(如未定界的嵌套数组)存在缺陷,则将变得更加困难,并且可能值得在服务器上进行修复。

答案 1 :(得分:0)

我认为丢失的[是复制和粘贴错误。假设您可能在对象上调用JSON.parse。参见下图:

enter image description here