我正在尝试将 JSON 解析为格式如下的数组:
{
"company": [
[
{
"id": 1,
"name": "Test Company1"
},
{
"id": 2,
"name": "Test Company2"
}
]
]
}
我正在使用 Newtonsoft JObjects 来执行此操作。到目前为止,我有以下代码,它使我进入“公司”对象:
JObject joResponse = JObject.Parse(json);
JArray arr = (JArray)joResponse["company"];
但是数组中只有一个值,它是一个包含所有 JSON 节点的值:
[
{
"id": 1,
"name": "Test Company1"
},
{
"id": 2,
"name": "Test Company2"
}
]
所以基本上我需要进入第二层,但是“公司”内部的第二层没有命名,所以我不知道如何访问它。
答案 0 :(得分:2)
你可以这样使用:
JToken arr = joResponse["company"]?.Children().First()[1];
或者:
JToken arr = joResponse["company"]?[0]?[1];
答案 1 :(得分:0)
最简单的方法是创建类来保存每个对象类型。 由于某种原因,company
实际上是一个数组数组,因此变得更加复杂.
class Root
{
public List<List<Company>> companies { get; set; }
}
class Company
{
public int id { get; set; }
public string name { get; set; }
}
然后你只需反序列化到根对象
var result = JsonConvert.DeserializeObject<Root>(json);
var companies = result.companies.SelectMany(c => c).ToList();