如何解析Angular或JavaScript中的特定对象?

时间:2019-03-06 07:11:51

标签: javascript arrays angularjs json object

我们如何解析角度或javascript中的以下对象类型,也许用于搜索循环或解析?

我想获取标题值并将其分配给标题,因为如您所见,标题的值是object:

{'title': 'Hey', 'instruction': 'Take a sad song a…75, 'sub_title': 'Jude', 'timelimit': '01:05:01'}

而不是您在示例中看到的“ Hey”(第二个对象也是如此)。有办法吗?

对象格式的JSON数组:

[  
   {  
      id:0,
      title:"{'title': 'Hey', 'instruction': 'Take a sad song a…75, 'sub_title': 'Jude', 'timelimit': '01:05:01'}"
   },
   {  
      id:1,
      title:"{'title': 'Assessment', 'instruction': 'Jude', 'cr…71, 'sub_title': 'Test', 'timelimit': '06:25:08'}"
   }
]

所需的输出:

[  
   {  
      id:0,
      title:"Hey"
   },
   {  
      id:1,
      title:"Assessment"
   }
]

4 个答案:

答案 0 :(得分:2)

确保您在json中使用正确的格式-内部使用双引号,外部使用单引号。

'{"title": "Hey", "instruction": "Take a sad song a…75", "sub_title": "Jude", "timelimit": "01:05:01"}'

然后您可以简单地做。

let jsonString = '{"title": "Hey", "instruction": "Take a sad song a…75", "sub_title": "Jude", "timelimit": "01:05:01"}';
let title = JSON.parse(jsonString).title;
console.log(title);

答案 1 :(得分:1)

var jsonObj = [  
   {  
      id:0,
      title:"{'title': 'Hey', 'instruction': 'Take a sad song a…75, 'sub_title': 'Jude', 'timelimit': '01:05:01'}"
   },
   {  
      id:1,
      title:"{'title': 'Assessment', 'instruction': 'Jude', 'cr…71, 'sub_title': 'Test', 'timelimit': '06:25:08'}"
   }
];


var updatedJsonObj = jsonObj.map( obj => { 
  return {
      ...obj, 
      title: JSON.parse(obj.title).title
  } 
});

console.log(updatedJsonObj);

//updatedJsonObj will have your required format

答案 2 :(得分:0)

在这里,我们正在执行以下步骤

  1. 遍历数组
  2. 对于每个对象,标题字段都是无效的JSON。使用title.replace(/'/g, '"')使其有效。然后解析JSON。
  3. 然后将已解析的JSON的标题分配给对象的标题

这是代码

arr = [  
   {  
      id:0,
      title:"{'title': 'Hey', 'instruction': 'Take a sad song a…75', 'sub_title': 'Jude', 'timelimit': '01:05:01'}"
   },
   {  
      id:1,
      title:"{'title': 'Assessment', 'instruction': 'Jude', 'sub_title': 'Test', 'timelimit': '06:25:08'}"
   }
]

arr =  arr.map((e)=> { e.title = JSON.parse(e.title.replace(/'/g, '"')).title; return e; })
// expected result is in arr

答案 3 :(得分:0)

正如其他人指出的那样,您的json无效,但是由于您提到它是从后端获取的,并且无法更改,因此我建议将标题视为字符串,并使用字符串操作来获取所需的值。 / p>

例如,您可以使用以下代码获取ID和标题

<div ng-repeat="item in data">
  {{item.id}} - 
  {{item.title.split('\'')[3]}}
</div>    

Demo