在递归JSON中需要方括号

Are square brackets required in recursive JSON?

本文关键字:方括号 递归 JSON      更新时间:2023-09-26

我有一个由XMLHttpRequest().responseText创建的REST API字符串:

{"value":{"patternList":"ERROR,Chase,Theater Chase,Random Colors & Locations,All Colors & Random Locations,Color Wipe,Rainbow,Rainbow Cycle,Theater Chase Rainbow,Larson Scanner,Random,Demo","MQUEUE":"3,4,5,6,7,8,9,10","currentPatternName":"Theater Chase"},"response":"get"}

"value"属性的值(令人困惑,我知道)本身就是一个JSON对象。该字符串被分配给result, var obj = JSON.parse(result)失败。但是,相同的字符串在jsonlint.com中验证。

如果我在嵌入的JSON对象周围插入方括号:

result = request.responseText;
result = result.replace(":{", ":[{");
result = result.replace("},", "}],");
var obj = JSON.parse(result);

所有这些都很好。带方括号的字符串也在jsonlint.com上进行验证。

JSON.parse()是否有问题?我正在讨论是否应该将丢失的方括号作为bug报告给API提供商。

谢谢,凯文

你不需要JSON。请重新解析

var responseText = JSON.stringify({
  "value": {
    "patternList": "ERROR,Chase,Theater Chase,Random Colors & Locations,All Colors & Random Locations,Color Wipe,Rainbow,Rainbow Cycle,Theater Chase Rainbow,Larson Scanner,Random,Demo",
    "MQUEUE": "3,4,5,6,7,8,9,10",
    "currentPatternName": "Theater Chase"
  },
  "response": "get"
});
var responseJSON = JSON.parse(responseText);
var value = responseJSON.value;
var patternList = value.patternList;
alert(patternList);