私はJSON配列を持っています。私は、これを次のクラスにマップ/デシリアライズする必要があります。C#でJSONオブジェクトをデシリアライズするにはNewtonsoft json.net
public sealed class DataItem{
public string UserId {get; set;}
public string TestId {get; set;}
public string UserName{get; set;}
public string Data1 {get; set;}
public string Data2 {get; set;}
public string Data3 {get; set;}
public string Data4 {get; set;}
public string Data5 {get; set;}
public string Data6 {get; set;}
public string Data7 {get; set;}
public string Data8 {get; set;}
public string Data9 {get; set;}
public string Data10 {get; set;}
...
...
}
JSON配列:私のプログラムで
[{
"UserId": "5656",
"TestId": "562",
"UserName": "testuser",
"Data1": "dang",
"Data2": "phy",
"Data3": "right",
"Data4": "left",
"Data5": "top",
"Data6": "abc",
"Data7": "rat",
"Data8": "test",
"Data9": "91",
"Data10": "9090",
...
...
}, {
"UserId": "8989",
"TestId": "12",
"UserName": "abc",
"Data1": "111",
"Data2": "222",
"Data3": "Pwww",
"Data4": "aaa",
"Data5": "bbbb",
"Data6": "cc",
"Data7": "ooo",
"Data8": "hh",
"Data9": "g",
"Data10": "5656",
...
...
}]
私はこのようでした:
IList<DataItem> allItem = JsonConvert.DeserializeObject<IList<DataItem>>(myJsonArray);
これが正常に動作します。
私の場合、データベースから来るData1
からData1000
のようなjson配列の中に約1000のデータがあります。以下のような そして、私は私のクラスで千件のデータを定義したくない「のDataItem」:
public sealed class DataItem{
...
...
public string Data1 {get; set;}
public string Data2 {get; set;}
.
.
.
public string Data1000 {get; set;}
}
はData1000にそれらの千件のデータ(データ1をマッピングするために、いくつかの動的なクラスやオブジェクトを使用してこの問題を解決する方法はあります)。
私は1000の長さの配列を使用して、このようにマップすると思っていますが、これはうまくいきません。
public sealed class DataItem{
public string UserId {get; set;}
public string TestId {get; set;}
public string[] Data {get; set;}
}
public DataItem(){
Data = new string[1000];
}
そして、私のプログラムで:
DataItem dataItem = new DataItem();
IList<DataItem> allItem = JsonConvert.DeserializeObject<IList<DataItem>>(myJsonArray);
P.S. JSON配列の構造を変更することはできません。
DataItemクラスの代わりに動的オブジェクトを使用できますか? 'JsonConvert.DeserializeObject>(myJsonArray);'? –
squillman
あなたはこのような何かをすることができます 'dynamic data = Json.Decode(json); – Majid