1

オブジェクトを JSON 表現にシリアル化し、クライアント側で使用するために、しばらくの間 .NET JavascriptSerializer クラスを使用しています。int、string などの既定の型を使用する限り、すべてがうまく機能します。ただし、オブジェクトのカスタム型プロパティをシリアル化する必要があります。私のクラスの例を見てみましょう:

public class ClientData 
{      
    public Guid Id { get; set; }
    public string Description { get; set; }
    public MyCustomObject ObjectX { get; set; }
}

私が欲しいのは、次のようなクライアント側オブジェクトです。

{ Id: 0000-0000-000-0000, Description: "some description", ObjectX: "125.20" }

これを機能させるために、JavaScriptConverter を使用してみましたが、辞書しか処理できないため、問題は解決しないようです。結果は次のようになります。

{ Id: 0000-0000-000-0000, Description: "some description", ObjectX: { Value: "125.20"} }

それは私が望むものではありません。ちなみに、MyCustomObject クラスに toString を実装しました。

助言がありますか?

ありがとうございます。

4

3 に答える 3

0

javascriptserializer の msdn ページは次のとおりです: http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx

備考欄には次のように書かれています。

オブジェクトをシリアル化するには、Serialize メソッドを使用します。JSON 文字列を逆シリアル化するには、Deserialize または DeserializeObject メソッドを使用します。JavaScriptSerializer でネイティブにサポートされていない型をシリアル化および逆シリアル化するには、JavaScriptConverter クラスを使用してカスタム コンバーターを実装します。次に、RegisterConverters メソッドを使用してコンバーターを登録します。

したがって、このクラスを確認する必要があります: http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptconverter.aspx

于 2011-03-30T12:35:52.920 に答える
0

カスタム オブジェクトを文字列に変換できます。オブジェクトを Uri インスタンスに変換する JavaScriptConverter を使用します。このインスタンスは、IDictionary も実装して、JavaScriptConverter から渡せるようにします。

このハックは、ここで DateTime オブジェクトについて説明されています: http://blog.calyptus.eu/seb/2011/12/custom-datetime-json-serialization/

于 2011-12-28T10:15:07.177 に答える
0

Json.NET ライブラリの JsonConverter を使用すると、うまくいくようです。

于 2011-03-30T14:49:26.477 に答える