JSON.parse 仅给出最后一个元素作为输出
JSON.parse giving only the last element as output
我正在使用 JSON 将信息从 NodeJS(服务器端)传送到我的客户端。当我尝试在客户端解析 JSON 时,它只输出最后一个元素,在本例中为 'name: "Sam"'
。我要输出所有元素
我试过使用一个数组和一个变量来分配解析后的数据。我还直接尝试将其记录到控制台:[console.log(JSON.parse(this.response));]
。三个都给出了相同的结果。
第console.logreturns所有元素以JSON形式。第二个returns只是最后一个。一共有3个元素。
我希望所有元素都分配给变量。
request.open('GET', 'http://localhost:3000/listofvoted', true);
request.onload = function () {
console.log(this.response)
console.log(JSON.parse(this.response));
}
request.send();
我收到的JSON:
{
"name": "Bran",
"name": "Ram",
"name": "Sam"
}
虽然 JSON(这只是一个符号)允许重复的键名,但指南是 they SHOULD be unique。如果您想使用 JSON 创建一个 JavaScript 对象,那么您将受到 JavaScript 对象不能有重复键这一事实的限制。因此,尽管您有有效的 JSON,但它不能由 JavaScript 对象表示,因此它不会在被解析的往返行程中存活下来(JSON 转换为 JavaScript 对象) 通过 JSON.parse
然后转换回 JSON.
为了方便您在 JavaScript 中工作,您可以考虑更改信息的 JSON 表示,以便它可以表示为 JavaScript 对象。
以下是表示您所拥有的可能有效的一些替代方法:
使用离散对象数组:
[
{ "name": "Bran" },
{ "name": "Ram" },
{ "name": "Sam }"
]
使用名称数组:
{
"names": [ "Bran", "Ram", "Sam" ]
}
作为最终的 heavy-handed 方法,您不必将 JSON 转换为 JavaScript 对象。您可以使用解析器解析它,该解析器允许您为 JSON 字符串中出现的句法元素提供自己的处理程序,并且可以按照您希望的任何方式处理重复的键。我可以建议 clarinet 图书馆这样做吗?
另见,How to get the JSON with duplicate keys completely in javascript
我正在使用 JSON 将信息从 NodeJS(服务器端)传送到我的客户端。当我尝试在客户端解析 JSON 时,它只输出最后一个元素,在本例中为 'name: "Sam"'
。我要输出所有元素
我试过使用一个数组和一个变量来分配解析后的数据。我还直接尝试将其记录到控制台:[console.log(JSON.parse(this.response));]
。三个都给出了相同的结果。
第console.logreturns所有元素以JSON形式。第二个returns只是最后一个。一共有3个元素。 我希望所有元素都分配给变量。
request.open('GET', 'http://localhost:3000/listofvoted', true);
request.onload = function () {
console.log(this.response)
console.log(JSON.parse(this.response));
}
request.send();
我收到的JSON:
{
"name": "Bran",
"name": "Ram",
"name": "Sam"
}
虽然 JSON(这只是一个符号)允许重复的键名,但指南是 they SHOULD be unique。如果您想使用 JSON 创建一个 JavaScript 对象,那么您将受到 JavaScript 对象不能有重复键这一事实的限制。因此,尽管您有有效的 JSON,但它不能由 JavaScript 对象表示,因此它不会在被解析的往返行程中存活下来(JSON 转换为 JavaScript 对象) 通过 JSON.parse
然后转换回 JSON.
为了方便您在 JavaScript 中工作,您可以考虑更改信息的 JSON 表示,以便它可以表示为 JavaScript 对象。
以下是表示您所拥有的可能有效的一些替代方法:
使用离散对象数组:
[
{ "name": "Bran" },
{ "name": "Ram" },
{ "name": "Sam }"
]
使用名称数组:
{
"names": [ "Bran", "Ram", "Sam" ]
}
作为最终的 heavy-handed 方法,您不必将 JSON 转换为 JavaScript 对象。您可以使用解析器解析它,该解析器允许您为 JSON 字符串中出现的句法元素提供自己的处理程序,并且可以按照您希望的任何方式处理重复的键。我可以建议 clarinet 图书馆这样做吗?
另见,How to get the JSON with duplicate keys completely in javascript