Vla*_*ani 21 json typescript angular
这是我的json:
{
"data": [
{
"comment": "3541",
"datetime": "2016-01-01"
}
]
}
Run Code Online (Sandbox Code Playgroud)
这是模型:
export class Job {
constructor(comment:string, datetime:Date) {
this.comment = comment;
this.datetime = datetime;
}
comment:string;
datetime:Date;
}
Run Code Online (Sandbox Code Playgroud)
查询:
getJobs() {
return this._http.get(jobsUrl)
.map((response:Response) => <Job[]>response.json().data)
}
Run Code Online (Sandbox Code Playgroud)
问题是在铸造之后Job[]我期待datetime属性Date但是它是字符串.它不应该转换为Date对象吗?我在这里失踪了什么?
Ami*_*mid 18
@Gunter绝对正确.我想要添加的唯一内容实际上是如何反序列化json对象,将其日期属性保持为日期而不是字符串(从引用的帖子中看起来并不容易看到这种方法).
这是我的尝试:
export class Helper
{
public static Deserialize(data: string): any
{
return JSON.parse(data, Helper.ReviveDateTime);
}
private static ReviveDateTime(key: any, value: any): any
{
if (typeof value === 'string')
{
let a = /\/Date\((\d*)\)\//.exec(value);
if (a)
{
return new Date(+a[1]);
}
}
return value;
}
}
Run Code Online (Sandbox Code Playgroud)
例如,您可以在此处看到此方法:dateReviver示例中的JSON.parse函数.
希望这可以帮助.
没有办法知道TS/JS这个值是一个日期.这是一个字符串,并按此处理.其他数据类型是可区分的,但JSON不提供任何特殊的日期支持.您需要手动转换它.
例如,请参阅此讨论如何使用JSON传输和转换日期如何格式化Microsoft JSON日期?
| 归档时间: |
|
| 查看次数: |
30185 次 |
| 最近记录: |