0

Date オブジェクトを含む JSON 文字列を解析する方法を見つけようとしています。

> 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 を解析する最良の方法は何ですか?

ありがとうございました

4

2 に答える 2

2

JSON を使用してオブジェクトを逆シリアル化することはできません ( Date> 文字列>Date)。
文字列、数値、オブジェクト (リテラル)、配列、ブール値、および null のみが適切にシリアライズできます。

Date次のようにオブジェクトを処理するカスタム パーサーを作成する必要があります。

  • 解析:Dateコンストラクターを使用してタイムスタンプを解析します。例えばnew Date(timestamp);

    function parse(str) {
        var obj = YAHOO.lang.JSON.parse(str);
        obj.date = new Date(obj);
    }
    
于 2012-03-19T22:37:01.600 に答える
0

Use yui stringToDate function stringToDate turns strings in the iso8601 UTC format into Dates :

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

parsed.date will now contain a Date object and other element will be de_serialized too.

see an example here.

于 2012-03-20T12:13:30.590 に答える