2016-10-20 1 views
0

私のJSON文字列はこのようです。どのように私は異なるプロパティ名にマップを逆シリアル化できます

string jsonstring1 = @"{'data':'N'}"; 
string jsonstring2 = @"{'data':[{'name':'jack','address':'la'}]}"; 
string jsonstring3 = @"{'data':{'flag':true}}"; 

これらの3つのJSON文字列で使用できるクラスを定義してオブジェクトに逆シリアル化する方法はありますか?

+0

[LINQ to JSON](http://www.newtonsoft.com/json/help/html/LINQtoJSON.htm)を使用しますか? – dbc

答えて

0

これら3つが唯一のJSON文字列であると仮定すると、3つのルートクラスを作成する必要があります。 toolsを使用するか、JSON文字列をそれぞれコピーして貼り付け、[編集] - [形式を選択して貼り付け]> [JSONをクラスとして貼り付け]の順に選択して貼り付けます。例えばjsonstring2に対応するクラスは、次のようになります。

public class Rootobject 
{ 
    public Person[] data { get; set; } 
} 

public class Person 
{ 
    public string name { get; set; } 
    public string address { get; set; } 
} 

は、その後、あなたが以下のように「データ」の種類を検出する必要があります。

JObject jo = JObject.Parse(jsonstring2); 
string type = jo["data"].GetType().Name; 

になります。この場合、どのJArray(他の2つはJValueとJObjectです)。次に、switch文を使用して文字列を正しいクラスにデシリアライズできます。

関連する問題