Javascript 仅给出最后一个元素作为输出的JSON.parse

Javascript 仅给出最后一个元素作为输出的JSON.parse,javascript,json,parsing,client-side,Javascript,Json,Parsing,Client Side,我使用JSON将信息从NodeJS服务器端传输到客户端。当我尝试在客户端解析JSON时,它只输出最后一个元素,在本例中为“name:Sam”。我希望输出所有元素 我尝试使用数组和变量来分配解析数据。我还直接尝试使用:[console.logJSON.parsethis.response;]将其记录到控制台。这三个都给出了相同的结果 第一个console.log以JSON形式返回所有元素。第二个只返回最后一个。总共有3个元素。 我希望所有元素都分配给变量 request.open('GET', '

我使用JSON将信息从NodeJS服务器端传输到客户端。当我尝试在客户端解析JSON时,它只输出最后一个元素,在本例中为“name:Sam”。我希望输出所有元素

我尝试使用数组和变量来分配解析数据。我还直接尝试使用:[console.logJSON.parsethis.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仅仅是一种符号,它允许重复的键名,但它的指导思想是这样的。如果您想使用JSON创建JavaScript对象,那么JavaScript对象不能有重复的键这一事实就限制了您。因此,尽管您拥有有效的JSON,但它不能由JavaScript对象表示,因此它将无法通过JSON.parse解析JSON并转换为JavaScript对象,然后再转换回JSON

<> p>为了方便自己在JavaScript中工作,可以考虑更改信息的JSON表示,以便将其表示为JavaScript对象。

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

使用离散对象数组:

[
  { "name": "Bran" },
  { "name": "Ram" },
  { "name": "Sam }"
]
使用名称数组:

{
  "names": [ "Bran", "Ram", "Sam" ]
} 
作为最后一种重型方法,您不必将JSON转换为JavaScript对象。您可以使用一个解析器对其进行解析,该解析器允许您为JSON字符串中出现的语法元素提供自己的处理程序,并且您可以以任何方式处理重复的键。请允许我建议图书馆这样做


另请参见,

如果您可以提供来自该服务器的json,那就太好了。一个对象只能有一个具有给定名称的属性。因此…我不能有三个名称:?如果我只制作{Bran,Ram,Sam}它会工作吗?使用[]:[Bran,Ram,Sam]来制作数组而不是普通对象。