【问题标题】:parse [object Object] Angular 6解析 [object Object] Angular 6
【发布时间】:2025-12-02 00:20:13
【问题描述】:

我想解析一个字符串并将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: 位置 1 处 JSON 中的意外标记 o

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

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

core.js:1671 错误类型错误:无法读取属性“forEach” 未定义

【问题讨论】:

  • 数据中的[object Object]是什么?
  • 这是我的条目如何查看我的数据库,我使用邮递员发布它,但 project 具有我在问题中写的格式。
  • 您能否在element 中添加控制台并将控制台数据发布到您的问题中。
  • 试试data.project.forEach
  • 使用 JSON.parse(data.project)。 //逻辑和检查项目列表是否有效。 IE。它是否正确格式化或不使用 JSON.stringify()

标签: json angular jsonparser


【解决方案1】:

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

【讨论】:

  • 谢谢你,你让我意识到我做错了什么。我必须先用 JSON.stringify(x) 保存数据
【解决方案2】:

问题是我没有解析正确的东西。这是正确的sn-p:

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

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

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

【讨论】:

    【解决方案3】:

    试试这样:

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

    【讨论】:

      【解决方案4】:

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

      谢谢, 吉涅什·拉瓦尔

      【讨论】:

        【解决方案5】:
        JSON.parse(data).array.forEach(element => {
             this.employees.push({
                projectName: element.project.projectName,
                poNumber: element.project.poNumber
             })
        });
        

        【讨论】:

        最近更新 更多