我想解析一个字符串并将projectName
和poNumber
保存到2个变量中。这就是我现在使用JSON.parse()
employees = []
JSON.parse(data).array.forEach(element => {
this.employees.push({
projectName: element.projectName,
poNumber: element.poNumber
})
});
console.log(employees['projectName'])
console.log(employees['poNumber'])
其中data
具有以下格式:
{"id":1,"name": "john doe", "project":"[object Object]"}
和project
如下:
"project": [
{
"projectName": "proj1",
"poNumber": "1"
}
]
但是我得到这个错误
ERROR SyntaxError:JSON中位置1处的意外令牌o
我在哪里误会?谢谢您的时间!
编辑:我理解为什么会出现此错误,因为我的数据已经是一个对象并且不需要使用JSON.parse()
,但是我的代码仍然无法正常工作,因为我得到了错误:
core.js:1671错误TypeError:无法读取的属性'forEach' 未定义
答案 0 :(得分:3)
答案 1 :(得分:1)
尝试这样:
JSON.parse(data).array.forEach(element => {
this.employees.push({
projectName: element.project.projectName,
poNumber: element.project.poNumber
})
})
答案 2 :(得分:1)
我在JSON格式中遇到了同样的错误,但是在在线JSON验证器上对其进行了验证之后,它似乎很完美。在此基础上,我创建了以下示例,该示例显示了两种不同的方式来获取“员工”数组中的数据。
我希望这会有所帮助。
let data = {
"id":1,"name":"john doe",
"project":[
{
"projectName": "proj1",
"poNumber": "1"
},
{
"projectName": "proj2",
"poNumber": "2"
}
]
};
let employees = [];
Object.keys(data).map(key => {
if(key === 'project') {
// Method 1
// ===========================
data[key].map(obj => {
employees.push(obj);
});
// Method 2 : Shorter method
// ===========================
employees.push(...data[key]);
}
});
console.log('Employees :', employees);
谢谢, 吉涅什·拉瓦尔(Jignesh Raval)
答案 3 :(得分:1)
问题是我没有解析正确的内容。这是正确的代码段:
let p = JSON.parse(data.project);
this.employees.push({
projectName: p.projectName,
poNumber: p.poNumber
})
谢谢大家的帮助!您的每个答案都是正确的。
答案 4 :(得分:0)
JSON.parse(data).array.forEach(element => {
this.employees.push({
projectName: element.project.projectName,
poNumber: element.project.poNumber
})
});