我遇到了函数JSON.parse()
我使用了这个,因为来自Web服务器的数据总是一个字符串。 我有这个JSON
{
"StatusCode": 0,
"StatusMessage": "OK",
"StatusDescription":
[
{
"id": "1",
"datetime": "2018-04-13",
"data":"{ "id_data": "1S1S2ED333", "model": "02S", "serial_data": "123456" }"
}
]
}
我想转换此字符串
"{ "id_data": "1S1S2ED333", "model": "02S", "serial_data": "123456" }"
to:
{id_data: "1S1S2ED333", model: "02S",serial_data:"123456"}
我试图转换:
export class Product{
id: number;
datetime: Date;
data: string;
constructor(obj: any) {
this.id= obj.id;
this.datetime= obj.datetime;
this.data = obj.data; //show "data":"{ "id_data": "1S1S2ED333", "model": "02S", "serial_data": "123456" }"
this.data= JSON.parse(this.data); // show ERROR SyntaxError: Unexpected token u in JSON at position 0 at JSON.parse (<anonymous>)
this.data = typeof this.data == "object"? this.data : typeof this.data == "string"? JSON.parse(this.data) : {}; `//show data:{}`
this.data = obj && JSON.stringify(this.data ); //undefined
}
public generateUrlencodedParameters(token: string, id?: number): string {
let urlSearchParams = new URLSearchParams();
urlSearchParams.append('data', this.data.toString());
urlSearchParams.append('datatime', this.datatime.toString());
urlSearchParams.append('token', token);
return urlSearchParams.toString();
}
}
你能建议我,问题是什么?
我想在html中显示这些数据。
当我尝试
时<table *ngFor="let item of products">
<tr>{{item.id}}</tr>
<tr>{{item.datatime}}</tr>
<tr>{{item.data}}</tr> //show all string { "id_data": "1S1S2ED333", "model": "02S", "serial_data": "123456" }
</table>
我只想显示model
和serial_data
,我必须进行字符串处理
答案 0 :(得分:0)
由于两个原因,这个问题可能会出现
First =&gt;您的data
已经被解析或者没有来过字符串,所以为此
this.data = typeof this.data == "object"? this.data : typeof this.data == "string"? JSON.parse(this.data) : {};
秒=&gt;检查你的Json我认为可能有问题。
我不确定它是否会起作用,因为你的JSON没有以正确的格式特别是数据属性。我建议你从服务器
以适当的格式发送JSONthis.data =JSON.parse(this.data.replace(new RegExp('}"',"g"),"}").replace(new RegExp('"{',"g"),"{").trim())
答案 1 :(得分:0)
我认为您的问题在于您的构造函数(至少在您与我们分享的内容中):
this.data = JSON.parse(this.data);
但您从未将this.data
分配给任何内容,因此undefined
和JSON.parse
失败。