2016-10-17 14 views
1

ServiceStack JsonSerializerを使用します。ServiceStackオブジェクトの逆シリアル化インターフェイスのプロパティ

私は私のobject.And私のシリアライズされた文字列は「__type」のようなすべての種類の情報が含まれているをシリアル化する前に、私は真のIncludeTypeInfoプロパティを設定しています:」Interfacesb、....

私はその時私の文字列をデシリアライズしたいです。

01:オブジェクトをデシリアライズする際のインターフェースプロパティはnull私はそこに私のシリアル化さstring.Isで型情報他のコンフィギュレーションの必要性を持っているにもかかわらず

私は2つの方法 JsonSerializer.SerializeToStringJsonSerializer.DeSerializeFromString

例を使用します

JsConfig.IncludeTypeInfo = true; 

Public Class MyObject 
{ 
Public string a{get;set;} 
Public interface b{get;Set;} 
} 
+0

確認できるようにフルコードサンプルを含めることはできますか?どのバージョンのサービススタックを使用していますか? –

+0

私は3.9を使用しています。私のコードブロックは、インターフェイスを含み、逆シリアル化するクラスをシリアライズします。 – Bilgehan

答えて

1

最初に、バージョン4. *は継続的に開発されたバージョンです。 3.9は誰にも積極的に維持されていません。 servicestack.text 4.50

テスト第二に、私は、これは、このプロパティはデシリアライズするためにそれをバック実用的なオブジェクトを作ったとは思いません。

私は4.50で同じことをやった、それだけでデシリアライズされません:https://stackoverflow.com/a/21603948/1275832enter image description here

代替ソリューションここ

あなたはJSONから種類をしたい場合、あなたはどのように読むことができます。

あなたはタイプがある場合:

public static object FromJson(this string json, Type deserializeType) 
{ 
    return typeof(JsonSerializer).GetMethod("DeserializeFromString", BindingFlags.Static) 
     .MakeGenericMethod(deserializeType) 
     .Invoke(null, new[] { json }); 
} 
:私は別の解決策として、次のコードを使用し

を実行時の動的なタイプのためのソリューション(v4.50)として(その拡張メソッドに注意してください)

と使用方法:var object = (MyInterface)jsonString.FromJson(Type.GetType(AssemblyQualifiedNameString));

+1

私は自分の問題を発見しました。オブジェクト。 – Bilgehan

関連する問題