convert - object to json angular
Cómo obtener el objeto Date de json Response en mecanografiado (2)
Aquí está mi json:
{
"data": [
{
"comment": "3541",
"datetime": "2016-01-01"
}
]
}
Aquí está el modelo:
export class Job {
constructor(comment:string, datetime:Date) {
this.comment = comment;
this.datetime = datetime;
}
comment:string;
datetime:Date;
}
Consulta:
getJobs() {
return this._http.get(jobsUrl)
.map((response:Response) => <Job[]>response.json().data)
}
El problema es que después de convertir a
Job[]
espero que la propiedad
datetime
sea
Date
pero es una cadena.
¿No debería lanzar al objeto Date?
que me estoy perdiendo aqui?
@Gunter es absolutamente correcto. Lo único que me gustaría agregar es en realidad cómo deserializar el objeto json manteniendo sus propiedades de fecha como fechas y no cadenas (de la publicación referenciada no es tan fácil ver este enfoque).
Aquí está mi intento:
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;
}
}
Puede ver este enfoque, por ejemplo, aquí: JSON.parse Function en el ejemplo dateReviver.
Espero que esto ayude.
No hay forma de saber para TS / JS que este valor es una fecha. Es una cuerda y tratada como tal. Se pueden distinguir otros tipos de datos, pero JSON no proporciona ningún soporte especial para la fecha. Necesita convertirlo manualmente.
Consulte, por ejemplo, esta discusión sobre cómo transportar y convertir una fecha usando JSON. ¿Cómo formateo una fecha JSON de Microsoft?