c# > Json 使用"recurrent objects"反序列化



我正在使用visual studio和c#,我是初学者....: - (

我想反序列化这个json响应:

[
{
"id": 10076,
"nom": "00 Test Api Upload"
},
{
"id": 9730,
"nom": "2021 Vacances Sabran Gruissan",
"**childs**": [
{
"id": 9731,
"nom": "Gruissan"
},
{
"id": 9745,
"nom": "Sabran"
}
]
}
]

我试着这样做:

public class Child
{
public int id { get; set; }
public string nom { get; set; }
}
public class Root
{
public int id { get; set; }
public string nom { get; set; }
public IList<Child> childs { get; set; }
}
Root myDeserializedClass = JsonConvert.DeserializeObject<Root>(response.Content); 

但是不行

我有这样的错误:

Newtonsoft.Json。JsonSerializationException: '无法将当前JSON数组(例如[1,2,3])反序列化为类型'GpxToolZ。VisuGpx+Root',因为该类型需要一个JSON对象(例如{"name":"value"})来正确反序列化。要修复此错误,可以将JSON更改为JSON对象(例如{"name":"value"}),或者将反序列化类型更改为数组或实现集合接口的类型(例如ICollection, IList),例如可以从JSON数组反序列化的List。还可以将JsonArrayAttribute添加到类型中,以强制它从JSON数组进行反序列化。路径",第一行,位置1

有人能帮我吗?

谢谢。

你有一个对象数组,而不仅仅是一个,所以尝试使用Root代替Root[]或者试试下面的代码

var jD = JsonConvert.DeserializeObject<Data[]>(json);

public partial class Data
{
[JsonProperty("id")]
public long Id { get; set; }
[JsonProperty("nom")]
public string Nom { get; set; }
[JsonProperty("childs", NullValueHandling = NullValueHandling.Ignore)]
public Child[] Childs { get; set; }
}
public partial class Child
{
[JsonProperty("id")]
public long Id { get; set; }
[JsonProperty("nom")]
public string Nom { get; set; }
}

最新更新