2016-12-21 11 views
1

GSONを使用してJavaから生成されたJSONがあります。私はC#で同じフィールドを再作成したい。 JSONはこのように見えます。GSONで生成されたJSON文字列を非直列化するC#

{ 
    "bool1": true, 
    "long1": 0, 
    "double1": 500.0, 
    "int1": 1, 
    "double2": 0.4, 
    "double3": 0.3, 
    "double4": 1.0, 
    "double5": 0.1, 
    "int2": 0, 
    "int3": 0, 
    "long2": 20160901, 
    "class1object1": { 
     "serialVersionUID": 1, 
     "class1int1": 0, 
     "class1int2": 0, 
     "class1int3": 0, 
     "class1double1": 68.3, 
     "class1doubleArray1": [68.3], 
     "class1double2": 65.45, 
     "class1doubleArray2": [65.45], 
     "class1int4": 1 
    }, 
    "class1object2": { 
     "serialVersionUID": 1, 
     "class1int1": 135, 
     "class1int2": 138, 
     "class1int3": 105, 
     "class1double1": 68.1, 
     "class1doubleArray1": [67.57, 67.6, 67.48, 67.45, 67.39, 67.42, 67.38, 67.37, 67.35, 67.35, 67.37, 67.35, 67.36, 67.37, 67.35, 67.37, 67.38], 
     "class1double2": 67.26, 
     "class1doubleArray2": [67.5, 67.53, 67.46, 67.4, 67.39, 67.38, 67.37, 67.32, 67.33, 67.33, 67.33, 67.35, 67.36, 67.33, 67.33, 67.37, 67.34], 
     "class1int4": 240 
    }, 
    "int4": 1, 
    "class2object1": { 
     "serialVersionUID": 1, 
     "class2double1": 2.8499999999999943, 
     "class2double2": 1.6758422688703467, 
     "class2double3": 0.09523809523809523 
    }, 
} 

これらのクラスやその他のフィールドの定義は、既にC#アプリケーションにあります。また、必要に応じて、フィールドの名前をJSONと同じ名前に保つことができます。

これを達成するためにどのツールを使用すればよいですか?

+0

このリンクを使用してください:http://json2csharp.com/ – Saadi

+1

あなたが使用することができますが、[Json2csharp](のhttp:// json2csharp .com /)を使って自動的にクラスを生成し、[JsonNET](http://www.newtonsoft.com/json)をデシリアライズします。 – Pikoh

答えて

1

JSON2CSHARPを使用するか、jsonをクリップボードにコピーします。> Visual Studio>編集>ペーストに移動します(これは、NaN/Inf値の可能性があります)特殊>クラスとしてJSONを貼り付けそれはあなたのモデルクラスを与えるだあなたはJSONをデシリアライズすることができますUisng Newtonsoft.Jsonパッケージ:。。

JsonConvert.DeserializeObject<RootClassName>("json"); 

をお使いのモデルクラスがなります。

public class Class1 
{ 
    public int serialVersionUID { get; set; } 
    public int class1int1 { get; set; } 
    public int class1int2 { get; set; } 
    public int class1int3 { get; set; } 
    public double class1double1 { get; set; } 
    public List<double> class1doubleArray1 { get; set; } 
    public double class1double2 { get; set; } 
    public List<double> class1doubleArray2 { get; set; } 
    public int class1int4 { get; set; } 
} 

public class Class2 
{ 
    public int serialVersionUID { get; set; } 
    public int class1int1 { get; set; } 
    public int class1int2 { get; set; } 
    public int class1int3 { get; set; } 
    public double class1double1 { get; set; } 
    public List<double> class1doubleArray1 { get; set; } 
    public double class1double2 { get; set; } 
    public List<double> class1doubleArray2 { get; set; } 
    public int class1int4 { get; set; } 
} 

public class Class3 
{ 
    public int serialVersionUID { get; set; } 
    public double class2double1 { get; set; } 
    public double class2double2 { get; set; } 
    public double class2double3 { get; set; } 
} 

public class RootObject 
{ 
    public bool bool1 { get; set; } 
    public int long1 { get; set; } 
    public double double1 { get; set; } 
    public int int1 { get; set; } 
    public double double2 { get; set; } 
    public double double3 { get; set; } 
    public double double4 { get; set; } 
    public double double5 { get; set; } 
    public int int2 { get; set; } 
    public int int3 { get; set; } 
    public int long2 { get; set; } 
    public Class1 Class1 { get; set; } 
    public Class2 Class2 { get; set; } 
    public int int4 { get; set; } 
    public Class3 Class3 { get; set; } 
} 

をまたあなたが他の人の名前を使用したい場合は、 C#クラスuが、これはあなたが助けるべきである。この例で別の名前を指定することができ、JsonProperty(PropertyName = "yourJsonName")を使用する必要があります。

public class Foo 
{ 
    [JsonProperty(PropertyName = "fooJSONname")] 
    public int FooNumber { get; set; } 

} 
+0

JSONの作成時に使用するデータ型を指定する方法はありますかGSON? – Smit

+0

それはあなたが '[JsonConverter(typeof(datatype))]を意味するのか分かりません –

関連する問題