1

JSONを.NETで解析する公式の例に従っています。

products.json私はファイルを作成しました:

{
    "Name": "Apple",
    "Expiry": new Date(1230422400000),
    "Price": 3.99,
    "Sizes": [
        "Small",
        "Medium",
        "Large"
    ]
}

文字列に読み込んでから逆シリアル化します。私はそれを次のように解析しようとしています:

Product deserializedProduct;

string jsonObj = File.ReadAllText(@"..\..\Content\products.json");
if (jsonObj != null) 
{
    try
    {
        deserializedProduct = JsonConvert.DeserializeObject<Product>(jsonObj);
    }
    catch (Exception e)
    {
        //log exception;
    }
}

次の例外が発生します。

Error reading date. Unexpected token: StartConstructor. Path 'Expiry', line 3, position 24.

JSONが日付オブジェクトを許可しないことは知っていますが、なぜこの例new Date(1230422400000)では日付オブジェクトを表すためにを使用するのですか?

4

1 に答える 1

4

コンバーターを渡す必要があります。次のようなものを試してください。

deserializedProduct = JsonConvert.DeserializeObject<Product>(jsonObj, new JavaScriptDateTimeConverter());

理由については、これは古い例である可能性があります。Json.NETは、より正式な方法(IIRC)を使用する前に、古いDateオブジェクトを使用していました。ただし、処理方法を指示すれば、シリアル化と逆シリアル化の両方を行うことができます。

于 2013-01-11T11:10:53.467 に答える