【发布时间】:2018-04-13 11:58:26
【问题描述】:
我的函数JSON.parse()有问题
我使用这个是因为我来自网络服务器的数据总是一个字符串。 我有这个 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" }"
到:
{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 为此我必须进行字符串处理
【问题讨论】:
-
您共享的 JSON 样本的第一个位置没有“u”字母。我的猜测是
this.data是“未定义的”.. 你能console.log它检查一下吗? -
请编辑我的帖子
-
这不是格式错误的 JSON 吗? JSONLint 解析失败.. 引号应该被转义
-
@MasterPo 我的数据,我想转换成正确的Json
-
你能试试
JSON.parse(this.data.replace(/"/g, '\\"'))吗?它在解析之前转义字符串中的所有双引号
标签: json angular typescript