将字符串转换为角度为4的对象数组

时间:2018-02-09 13:04:46

标签: javascript json angular typescript object

我有这个api回复:

{
   "status": "success",
   "code": 0,
   "message": "version list",
   "payload" : "[{\"code\":\"AB\",\"short\":\"AB\",\"name\":\"Alberta\",\"country\":\"CA\"},{\"code\":\"BC\",\"short\":\"BC\",\"name\":\"British Columbia\",\"country\":\"CA\"}]"

}

我正在尝试获取不同有效负载对象的名称。  此处的有效负载以字符串形式返回。

因此,当我尝试获取对象的名称时,它不起作用!

getAllPayload() {
  this.myService.getpayload().subscribe(
     data => {
        this.values= data;
     }
   );
}     

<select class="form-control">                     
   <option *ngFor="let value of values.payload" >
      {{value.name}}
   </option>
</select>

当我尝试通过JSON.parse解析对象时,它不起作用

我必须做什么来解析有效负载并获得不同的名称?

2 个答案:

答案 0 :(得分:0)

你的字符串中有未转义的引号。一旦逃脱,比:

JSON.parse()

var res = {
"payload" : "[{\"code\":\"AB\",\"short\":\"AB\",\"name\":\"Alberta\",\"country\":\"CA\"},{\"code\":\"BC\",\"short\":\"BC\",\"name\":\"British Columbia\",\"country\":\"CA\"}]"
};
  
var payloadArray = JSON.parse(res.payload);
console.log( payloadArray )
console.log( Array.isArray(payloadArray) ) // true

答案 1 :(得分:0)

你可以这样做:

getAllPayload() {
this.myService.getpayload().subscribe(
    data => {
    this.values= JSON.parse(data.payload) // this line converts the payload string to array.

    ;
  }
 );

然后在模板中

<option *ngFor="let value of values" >
     {{value.name}}</option>
 </select>

希望你能得到解决方案。