gpt4 book ai didi

javascript - JSON.parse 仅给出最后一个元素作为输出

转载 作者:行者123 更新时间:2023-12-02 23:17:04 32 4
gpt4 key购买 nike

我使用 JSON 将信息从 NodeJS(服务器端)传输到客户端。当我尝试在客户端解析 JSON 时,它仅输出最后一个元素,在本例中为 'name: "Sam"'。我想要输出所有元素。

我尝试使用数组和变量来分配解析的数据。我还直接尝试使用以下命令将其记录到控制台:[console.log(JSON.parse(this.response));]。三者都给出了相同的结果。

第一个console.log以JSON形式返回所有元素。第二个仅返回最后一个。总共有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.parse 解析(JSON 转换为 JavaScript 对象)然后再转换回来的往返过程中存活下来到 JSON。

为了方便您使用 JavaScript,您可以考虑更改信息的 JSON 表示形式,以便可以将其表示为 JavaScript 对象。

以下是一些表示您拥有的可能有效的替代方法:

使用离散对象数组:

[
{ "name": "Bran" },
{ "name": "Ram" },
{ "name": "Sam }"
]

使用名称数组:

{
"names": [ "Bran", "Ram", "Sam" ]
}

作为最后一种严厉的方法,您不必将 JSON 转换为 JavaScript 对象。您可以使用解析器来解析它,该解析器允许您为 JSON 字符串中出现的语法元素提供自己的处理程序,并且可以按照您希望的任何方式处理重复的键。我可以建议clarinet这样做的库。

另请参阅 How to get the JSON with duplicate keys completely in javascript

关于javascript - JSON.parse 仅给出最后一个元素作为输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57125623/

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