我有如下JSON数据:
{
"Data":[
{
"Customer":"C1",
"ID":"11111",
"Desc":"Row 1",
"Price":"123456"
},
{
"Customer":"C2",
"ID":"22222",
"Desc":"Row 2",
"Price":"789012"
},
{
"Customer":"C3",
"ID":"33333",
"Desc":"Row 3",
"Price":"345678"
}
],
"Success":true
}
我如何将这些数据转换成像这样的C#数据表
---------------------------------------------
Customer | ID | Desc | Price
---------------------------------------------
C1 | 11111 | Row 1 | 123456
C2 | 22222 | Row 2 | 789012
C3 | 33333 | Row 3 | 345678
并读取变量中的Success值
我想在代码中使用Success变量,并在网格视图中显示该表。
我试过这个代码,但它不起作用:
DataTable gdata = JsonConvert.DeserializeObject<DataTable>(result);
Json。NET支持将数据表序列化为对象数组,但是JSON中的数据表嵌套在"Data"
属性中,因此需要将DataTable
封装在某个根对象中。一个匿名对象就足够了:
var root = JsonConvert.DeserializeAnonymousType(result, new { Data = default(DataTable), Success = default(bool) });
var gdata = root?.Data;
var success = root?.Success ?? false;
或者,你可以引入一个通用的根模型,比如:
public class DataRoot<T>
{
public T Data { get; set; }
public bool Success { get; set; }
}
做:
var root = JsonConvert.DeserializeObject<DataRoot<DataTable>>(result);
在这里演示小提琴。