解析 [object 对象] Angular 6

parse [object Object] Angular 6

我想解析一个字符串并将 projectNamepoNumber 保存到 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: Unexpected token o in JSON at position 1

我哪里弄错了?感谢您的宝贵时间!

编辑:我明白为什么我会收到这个错误,因为我的数据已经是一个对象,不需要使用 JSON.parse(),但我的代码仍然无法正常工作,因为我收到错误:

core.js:1671 ERROR TypeError: Cannot read property 'forEach' of undefined

您的 Json 字符串无效,未被 JSON.stringify() 字符串化,而是被 toString 方法字符串化,否则嵌套对象被正确字符串化。

这样试试:

JSON.parse(data).array.forEach(element => {
  this.employees.push({
    projectName: element.project.projectName,
    poNumber: element.project.poNumber
  })
})
JSON.parse(data).array.forEach(element => {
     this.employees.push({
        projectName: element.project.projectName,
        poNumber: element.project.poNumber
     })
});

我在 JSON 格式中遇到了同样的错误,但在在线 JSON 验证器上对其进行验证后,它看起来很完美。在此基础上,我创建了以下示例,其中显示了两种不同的方法来获取 "employees" 数组中的数据。

希望对您有所帮助。

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);

谢谢, 吉涅什·拉瓦尔

问题是我没有解析正确的东西。这是正确的片段:

let p = JSON.parse(data.project);

  this.employees.push({
  projectName: p.projectName,
  poNumber: p.poNumber
})

谢谢大家的帮助!你的每一个答案都是正确的。