私はServicestack.Textパッケージを使用して、JSONとの間でオブジェクトをシリアル化および逆シリアル化します。私のオブジェクトの1つに、オブジェクト型(System.Object)のプロパティがあります。これは、長い、二重、文字列の3つのうちの1つです。ただし、JsonSerializer.DeserializeFromStringを使用すると、常に文字列として逆シリアル化されます。シリアル化されたときのタイプとして逆シリアル化する必要があります。JsConfig.IncludeTypeInfo=trueで型情報を含めてみました。ただし、これはクラスレベルにのみ適用され、プロパティレベルには適用されないようです。これを機能させるにはどうすればよいですか?
1 に答える
-1
これは、JSON 値を強制する方法に関する情報を得るために逆シリアル化する対象の型を調べるServiceStack JSON Serializerではサポートされていません。
プロパティを使用しているためobject
、型情報がないため、フォールバックしてこの情報の__typeプロパティの存在を探しますが、ServiceStack はペイロードをかなり肥大化させるため、ValueTypes の __type 情報を決して出力しません。
続行する型情報がないため、シリアライザーは値をオブジェクトである文字列として残します。
インターフェイスやレイト バインド オブジェクト型などの使用を避けることをお勧めします。これらはDTO に使用するのは悪い考えですが、このために、文字列値を検査し、に基づいて正しい型のインスタンスを返す拡張メソッドを作成できます。内容、例:
var dto = new WildCard { AnyObject = 1 };
dto.AnyObject.AsJsonValue(); //Extension method that
"1" -> int 1
"true" -> bool true
"anything else" -> string "anything else"
これに関する唯一の問題は、数値またはブール値を含む文字列リテラルを送信できないことです。これは、常にそれぞれの型に強制されるためです。
于 2013-01-26T00:11:27.043 に答える