Javascript JSON解析,对于单个元素没有特定的名称

Javascript JSON解析,对于单个元素没有特定的名称,javascript,arrays,json,parsing,Javascript,Arrays,Json,Parsing,如何通过解析以下JSON来获取值 [ { display: "Start Date", name: "Start_Date_vod__c" }, { display: "End Date", name: "End_Date_vod__c" }, { display: "Phase", name: "Phase__c" }, { display: "Clinical Trial Name", name: "

如何通过解析以下JSON来获取值

[
  {
    display: "Start Date",
    name: "Start_Date_vod__c"
  },
  {
    display: "End Date",
    name: "End_Date_vod__c"
  },
  {
    display: "Phase",
    name: "Phase__c"
  },
  {
    display: "Clinical Trial Name",
    name: "Name"
  },
  {
    display: "Role",
    name: "Role__c"
  }
]
我想创建一个JSOn数组,如下所示:
fieldLabels.push({labelName:“HCP_credentialsLabel”,labelValue:results[“Role__c”].display})

这不是有效的JSON,因为数组没有键。这应该可以解决这个问题:


{
arr:[
...
]
}

然后可以通过索引访问每个元素。例如obj.arr[0]。显示您所说的

但这是库函数的输出,因此不能对其结构进行任何更改,我们只需要处理此结构

嗯,库函数并没有生成JSON。如果结构以您描述的形式可靠,您可以删除前导的
{
和尾随的
}
,将其包装在
()
中,并通过
eval
,但切勿对不受信任的数据使用
eval
,因为它允许任意代码执行

如果您信任数据的来源,那么这相当容易:

var str = /*...your data string...*/;
// Remove the first { and last }, wrap in ()
str = "(" + str.trim().replace(/(?:^{)|(?:}$)/g, "") + ")";
// Parse it -- DO NOT USE eval ON UNTRUSTED DATA
var array = eval(str);
实例:

var str='{'+
'[' +
'  {' +
'显示:“开始日期”+
'名称:“开始日期\u视频\u c”'+
'  },' +
'  {' +
'显示:“结束日期”+
'name:'End_Date_vod___c''+
'  },' +
'  {' +
'显示:“阶段”+
'名称:“阶段c”'+
'  },' +
'  {' +
'显示:“临床试验名称”+
'姓名:“姓名”'+
'  },' +
'  {' +
'显示:“角色”+
'名称:“角色c”'+
'  }' +
']}';
str=“(”+str.trim().replace(/(?:^{)|(?:}$)/g“”+”);
var数组=eval(str);
//然后使用数组,例如
array.forEach(函数(条目){
console.log(entry.display);

});JSON无效,有两种方式:1。最外层表示它是一个对象(
{..}
),但随后它立即包含一个没有属性名称的数组。为了有效,数组前面必须有属性名和冒号。2.属性名称(
display
name
)在JSON中必须使用双引号。因此,第一步是使用有效的JSON::-)然后解析它,使用缺少的属性名访问数组,并循环遍历它。此外,不能使用类似{[]}的结构,因为object-{}需要“key”作为字符串,然后是数组,例如{“key”:[]}但这是库函数的输出,因此无法对其结构进行任何更改,我们只需要处理这个结构这个数据结构不是JSON。如果你真的需要阅读这样的输入,你就必须从头开始使用你自己的解析器。我怀疑你有一种常见的误解,认为JSON是JavaScript的同义词。“在调试中看到”部分表明您正在检查常规JavaScript变量,您甚至编辑了问题以删除一些错误。JSON是一种语言;JSON是纯文本。如果您没有解析字符串,那么它不太可能是JSON,甚至不可能假装是JSON。