每次我获取动态JSON数据时,它都可以是JSON数组或简单的JSON对象或嵌套的JSON对象。
我正在尝试反序列化并将JSON对象/数组转换为DataTable,以便使用Newtonsoft.Json进行进一步处理。
我的当前代码是
public DataTable ConvertJson2DataTable(string jdata)
{
DataTable dt = null;
try {
dt = (DataTable)JsonConvert.DeserializeObject(jdata, (typeof(DataTable)));
}
catch (Exception ex)
{
MessageBox.Show("exception: " +ex.Message.ToString());
}
return dt;
}
它适用于常规JSON对象和数组。
但是在处理一些复杂的JSON对象时,我会在完成反序列化对象后获得JSON字符串中的其他文本。"
这是我的示例JSON DATA
{
"ads": {
"items": [],
"total": 0,
"page": 1
},
"member": {
"memberId": "649991",
"displayName": "",
"email": "hasaxxx@hotodeal.com",
"memberStatus": "Y",
"smiId": "7aa205ea-7aa2-7aa2-7aa2-7aa205eac183",
"facebookId": "100001412016857",
"registerDate": null,
"emailConfirmed": false,
"smsConfirmed": false,
"facebookConfirmed": false,
"lineId": null,
"wechatId": null,
"displayImage": "",
"firstName": "Hasadin",
"lastName": "Pankran",
"telephone": "",
"mobile": null,
"listingCount": {
"online": 0,
"edit": 0,
"waiting": 0
},
"phones": null
}
}
答案 0 :(得分:0)
因为table / datatable表示复杂数据结构或关系模型的简单数据结构,所以应该将其转换为数据集而不是数据表。
转换为数据集的JSON结构应如下所示:
{
"ads": [{
"total": 0,
"page": 1
}],
"member": [{
"memberId": "649991",
"displayName": "",
"email": "hasaxxx@hotodeal.com",
"memberStatus": "Y",
"smiId": "7aa205ea-7aa2-7aa2-7aa2-7aa205eac183",
"facebookId": "100001412016857",
"registerDate": null,
"emailConfirmed": false,
"smsConfirmed": false,
"facebookConfirmed": false,
"lineId": null,
"wechatId": null,
"displayImage": "",
"firstName": "Hasadin",
"lastName": "Pankran",
"telephone": "",
"mobile": null
}]
}