Как разобрать строку JSON с атрибутом даты - PullRequest
0 голосов
/ 20 марта 2012

Я пытаюсь найти способ синтаксического анализа строки JSON, содержащей объект Date.

> var obj = {}
> obj.date = new Date();
Mon Mar 19 2012 15:14:22 GMT-0700 (PDT)
> obj.number = 1
1
> obj.float = 1.1
1.1
> obj.str = "hello"
"hello"
> obj
Object
date: Mon Mar 19 2012 15:14:22 GMT-0700 (PDT)
float: 1.1
number: 1
str: "hello"

> YAHOO.lang.JSON.stringify(obj)
"{"date":"\"2012-03-19T22:14:22Z\"","number":1,"float":1.1,"str":"hello"}"

> parsed = YAHOO.lang.JSON.parse(str)
Object
date: ""2012-03-19T22:14:22Z""
float: 1.1
number: 1
str: "hello"

вижу, что parsed.date - это строка, в которой obj.date ранее был объектом Date.Как лучше всего анализировать JSON с вложенными объектами?

спасибо

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

JSON нельзя использовать для десериализации объектов (Date> String > Date).Только строки, числа, объект (литералы), массивы, логические значения и null могут быть хорошо сериализованы.

Вы должны написать собственный анализатор, который обрабатывает объект Date следующим образом:

  • Parse: проанализировать метку времени с помощью конструктора Date.например, new Date(timestamp);.

    function parse(str) {
        var obj = YAHOO.lang.JSON.parse(str);
        obj.date = new Date(obj);
    }
    
0 голосов
/ 20 марта 2012

Использовать yui stringToDate Функция stringToDate превращает строки в формате UTC iso8601 в Dates:

var parsed = YAHOO.lang.Json.stringToDate(str);

parsed.date теперь будет содержать объект Date, а другой элемент также будет de_serialized.

см. Пример здесь .

...