gpt4 book ai didi

javascript - AJAX/JavaScript : parsing JSON that contains an array

转载 作者:行者123 更新时间:2023-11-28 03:54:29 25 4
gpt4 key购买 nike

我正在尝试解析我的页面通过 AJAX 响应获得的 JSON 消息,但是它一直抛出以下错误,我不知道为什么:

“SyntaxError: JSON.parse: JSON 数据的数组元素后应为‘,’或‘]’”

这是我页面的 javascript 的样子:

var xhttp = new XMLHttpRequest();

xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
var Response = JSON.parse(xhttp.responseText);
}
}

服务器返回的 JSON 如下所示:

{
"Error": "",
"ClientInfo": [{
"ID": 1,
"Name": "Bill"
}, {
"ID": 2,
"Name": "Sally"
}]
}

知道我做错了什么吗? JSON 验证器说它是有效的 JSON....

最佳答案

更新

正是 Error: 键让解析器将其吐出。查看演示。更新了演示以包含带有 Error: 的 JSON 以比较结果。不幸的是,我不得不注释掉控制台记录了错误 JSON,因为调试器立即发现了脚本错误。幸运的是,该演示仍然有效,因此您可以在加载后忽略初始错误。

测试 1

  1. 首先尝试使用 info 按钮。 [结果:莎莉]
  2. 接下来单击error0 按钮。 [结果:莎莉]
  3. 然后尝试使用 error1 按钮。 [结果:未定义]

所以它似乎解析如果你:

  1. 删除错误:“” 或者
  2. Error: "" 放在数组中。

测试 2

复制 info JSON 然后验证它。 JSONLint

当你使用 JSONLint 时,你必须剥离它:

{
"ClientInfo": [
{
"ID": 1,
"Name": "Bill"
},
{
"ID": 2,
"Name": "Sally"
}
]
}

现在复制错误 JSON 并验证它。

{
"Error": "",
"ClientInfo": [{
"ID": 1,
"Name": "Bill"
}, {
"ID": 2,
"Name": "Sally"
}]
}

它们都应该有效,但调试器和解析器拒绝 error JSON。

片段

// Prepare JSON
var info =
'{"ClientInfo": [' +
'{"ID": 1, "Name": "Bill"},' +
'{"ID": 2, "Name": "Sally"} ]}';

var error0 =
'{"ClientInfo": [' +
'{"ID": 1, "Name": "Bill"},' +
'{"ID": 2, "Name": "Sally"},' +
'{"Error": ""} ]}';


var error1 =
'{"Error": ""},' +
'{"ClientInfo": [' +
'{"ID": 1, "Name": "Bill"},' +
'{"ID": 2, "Name": "Sally"} ]}';


// Create a function that parses JSON Object

function JSONObj(json) {
var jsonObj = JSON.parse(json);
return jsonObj;
}

// A function that logs results one at a time so we can compare results

function processLog(result) {
console.log('Result: ' + result);
}

/* Test info and errors */

var lastClient = JSONObj(info).ClientInfo[1].Name;

var errorA = JSONObj(error0).ClientInfo[1].Name;

var errorB = JSONObj(error1).ClientInfo[1].Name;
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>

<ol>
<li>Remove this: <pre><code>"Error": "",</code></pre>
</li>
<li>Separate into segments (see script)</li>
<li>Wrap each segment with single quotes `'`</li>
<li>Add a `+` after each segment</li>
</ol>

<button onclick="processLog(lastClient);">info</button>
<button onclick="processLog(errorA);">error0</button>
<button onclick="processLog(errorB);">error1</button>

关于javascript - AJAX/JavaScript : parsing JSON that contains an array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36561689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com