2

一部の JSON 文字列を逆シリアル化して .net オブジェクトに戻す際に問題が発生しています。外部からの情報を含むコンテナ クラスがあり、そのClassType情報のタイプを定義するフィールド呼び出しがあり、実際のコンテンツは別のプロパティにあり、現在は何でもかまいません。そのため、オブジェクト タイプとして定義します。

以下は、問題を理解するのに役立つ .net クラス定義です。

class ClassOne
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class ClassTwo
{
    public string AddressLine { get; set; }
    public string AddressLine2 { get; set; }
}

class ClassThree
{
    public string Country { get; set; }
    public string Passport { get; set; }
}

class ContainerClass
{
    public string ClassType { get; set; }
    public object ClassContent { get; set; }
}

JSON 形式で外部から情報を取得する場合、次のようになります。

{"ClassType":"Class1","ClassContent":{"Name":"James","Age":2}}

Newtonsoft JSON.net ライブラリを使用して、JSON 文字列を逆シリアル化しています。デフォルトの逆シリアル化関数は、それを単に逆シリアル化してNewtonsoft.Json.Linq.JContainer. 定義にClassContent基づいて逆シリアル化する Converter をどのように作成できるか疑問に思っています。ClassTypeどのコードサンプルも高く評価されます。

4

4 に答える 4

0

以下を試してください

 var jsonObject = JObject.Parse(jsonString);

 var result = jsonObject.ToObject(Type.GetType("namespace.className"));
于 2015-02-10T12:06:05.223 に答える
0

サンプル:

var container = JsonConvert.DeserializeObject<ContainerClass>(json);
JContainer content = (JContainer)container.ClassContent;

switch(container.ClassType)
{
    case "Class1": return container.ToObject(typeof(ClassOne));
    ..    
}
于 2013-07-25T12:36:12.247 に答える