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

时间:2017-10-13 07:12:46

标签: 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: "Name"
  },
  {
    display: "Role",
    name: "Role__c"
  }
]

我想像这样创建一个JSOn数组: fieldLabels.push({labelName:“HCP_credentialsLabel”,labelValue:results [“Role__c”]。display});

2 个答案:

答案 0 :(得分: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 = '{' +
'[' +
'  {' +
'    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"' +
'  }' +
']}';

str = "(" + str.trim().replace(/(?:^{)|(?:}$)/g, "") + ")";
var array = eval(str);
// Then use the array, for instance
array.forEach(function(entry) {
  console.log(entry.display);
});

答案 1 :(得分:-2)

这是无效的JSON,因为数组没有密钥。这应该解决它:

  

{ arr: [ ... ] }

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