使用 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;}
}