【发布时间】:2017-05-26 11:47:30
【问题描述】:
我有 JSON 数组。我想将其映射/反序列化为以下类。
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);
这很好用。
但在我的情况下,json 数组中大约有 1000 个数据,例如来自数据库的 Data1 到 Data1000。
而且我不想在我的类 'DataItem' 中定义 1000 个数据,例如:
public sealed class DataItem{
...
...
public string Data1 {get; set;}
public string Data2 {get; set;}
.
.
.
public string Data1000 {get; set;}
}
有没有办法使用一些动态类或对象来映射这 1000 个数据(Data1 到 Data1000)来解决这个问题。
我正在考虑使用 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 Array 的结构。
【问题讨论】:
-
您可以只使用动态对象而不是您的 DataItem 类吗?
JsonConvert.DeserializeObject<IList<Dynamic>>(myJsonArray);? -
你可以这样做
dynamic data = Json.Decode(json);
标签: c# arrays json json.net windows-10-universal