我有下面的json,我试图反序列化它。棘手的部分是,在一个节点中,名称图像在一些数据中,它是作为数组来的,在一些它是作为JSON对象来的。所以我可以一次反序列化两个。
这是JSON格式。
{
"variants": [
{
"name": "test1",
"description": "test1",
"images": []
},
{
"name": "test2",
"description": "test2",
"images": {
"WHITE": [
{
"id": "ttest",
"product_id": "ttest"
}
]
}
}
]
}
现在,正如你在这里看到的图像,在一个我们有一个数组,在一个我们有json对象。
我试过下面。
public List<Variant> variants { get; set; }
public class Variant
{
public string name { get; set;}
public string description { get; set;}
public List<Image> images { get; set; }
}
public class Image
{
public List<White> White { get; set; }
}
public class White
{
public string id { get; set;}
public string product_id { get; set;}
}
然后在下面一行进行反序列化:var items = JsonConvert.DeserializeObject<TestClass>(content);
1条答案
按热度按时间83qze16e1#
images
的值似乎是:"WHITE"
。由于
images
的值有时是一个数组,有时是一个对象,因此需要使用适当的customJsonConverter<T>
将其反序列化。具体来说,定义以下数据模型:
其中
JsonSingleOrEmptyArrayConverter<T>
从this answer逐字复制到 Cannot Deserialize the Current JSON Object (Empty Array):现在你可以通过简单地执行以下操作来反序列化你的JSON:
演示小提琴here。