使用 json .net 反序列化数组数组
Deserialize array of array using json .net
我有一个 json 看起来像这样:
[
["0",true,"90","0","1647537980","0","243729846566","105591923388",false,["0","0","0"],[false,"0","0","0"]],["1",true,"42","0","1646708581","1646708581","111003905","0",false,["156","94348800","1646426440"],[false,"135238559235","14754525","4"]],
["2",true,"20","0","1646708602","1646708602","54061667","0",false,["52","31449600","1646538934"],[false,"2031490329","223870","2"]],
]
如何反序列化此 json?
我尝试在 MyModel 构造函数上添加 [JsonConstructor],但它从未被调用。
var obj = JsonSerializer.Deserialize<List<MyModel>>(json);
谢谢!
你有一个双重列表,所以或修复 json 或使用此代码
var obj = JsonSerializer.Deserialize<List<List<object>>>(json);
class应该至少有一个属性。您的 json 根本没有任何属性,因此在这种情况下只能使用数组。可以转换成class,比如像这样
public class MyClass
{
public List<object> Details {get;set;}
}
var jsonParsed = JArray.Parse(json);
List<MyClass> objects = jsonParsed.Select(p => p)
.Select(x => new MyClass { Details=x.ToObject<List<object>>() }).ToList();
现在,如果您需要更多详细信息,则必须将数组转换为 class,
数组的每个元素都应该有名字,例如
public class Details
{
public Id {get; set;}
public bool IsActive {get;set}
...and so on
}
在此之后你可以使用这个 class 已经
public class MyClass
{
public Details Details {get;set;}
}
我有一个 json 看起来像这样:
[
["0",true,"90","0","1647537980","0","243729846566","105591923388",false,["0","0","0"],[false,"0","0","0"]],["1",true,"42","0","1646708581","1646708581","111003905","0",false,["156","94348800","1646426440"],[false,"135238559235","14754525","4"]],
["2",true,"20","0","1646708602","1646708602","54061667","0",false,["52","31449600","1646538934"],[false,"2031490329","223870","2"]],
]
如何反序列化此 json?
我尝试在 MyModel 构造函数上添加 [JsonConstructor],但它从未被调用。
var obj = JsonSerializer.Deserialize<List<MyModel>>(json);
谢谢!
你有一个双重列表,所以或修复 json 或使用此代码
var obj = JsonSerializer.Deserialize<List<List<object>>>(json);
class应该至少有一个属性。您的 json 根本没有任何属性,因此在这种情况下只能使用数组。可以转换成class,比如像这样
public class MyClass
{
public List<object> Details {get;set;}
}
var jsonParsed = JArray.Parse(json);
List<MyClass> objects = jsonParsed.Select(p => p)
.Select(x => new MyClass { Details=x.ToObject<List<object>>() }).ToList();
现在,如果您需要更多详细信息,则必须将数组转换为 class, 数组的每个元素都应该有名字,例如
public class Details
{
public Id {get; set;}
public bool IsActive {get;set}
...and so on
}
在此之后你可以使用这个 class 已经
public class MyClass
{
public Details Details {get;set;}
}