我有这个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解析对象时,它不起作用
我必须做什么来解析有效负载并获得不同的名称?
答案 0 :(得分:0)
你的字符串中有未转义的引号。一旦逃脱,比:
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>
希望你能得到解决方案。