反序列化 JSON 由各种模型 C# 组成
Deserialising JSON made up of various models C#
我正在尝试研究如何反序列化可以由单个或多个模型组成的 JSON 响应,例如,我有以下 URL 和响应端点:
https://api.site.com/products?query=fruit
哪个 return 像这样的东西:
{
"fruit": [{ ... },{ ... }]
}
“水果”可以是任何东西,但作为替代,您也可以这样做:
https://api.site.com/products?query=fruit,pies
{
"fruit": [{ ... }, { ... }],
"pies": [{ ... }, { ... }]
}
所以我知道如何处理一次提供的“选择”之一,但是当同一响应中可以有 2 个单独的模型时,我该如何反序列化响应?
如果您事先知道 json 模型(也称为数据契约),那么您可以创建一个专用的 class。因此,对于上述情况,class 将是
public class AnyClassName
{
public List<Fruit> Fruit { get; set; }
public List<Pie> Pie { get; set; }
}
然后使用
Newtonsoft.Json.JsonConvert.DeserializeObject<AnyClassName>(jsonString)
如果您不知道数据合同,请使用
Newtonsoft.Json.JsonConvert.DeserializeObject(jsonString)
在这种情况下,您必须进行大量编码才能探测元素是否存在并提取值。
我正在尝试研究如何反序列化可以由单个或多个模型组成的 JSON 响应,例如,我有以下 URL 和响应端点:
https://api.site.com/products?query=fruit
哪个 return 像这样的东西:
{
"fruit": [{ ... },{ ... }]
}
“水果”可以是任何东西,但作为替代,您也可以这样做:
https://api.site.com/products?query=fruit,pies
{
"fruit": [{ ... }, { ... }],
"pies": [{ ... }, { ... }]
}
所以我知道如何处理一次提供的“选择”之一,但是当同一响应中可以有 2 个单独的模型时,我该如何反序列化响应?
如果您事先知道 json 模型(也称为数据契约),那么您可以创建一个专用的 class。因此,对于上述情况,class 将是
public class AnyClassName
{
public List<Fruit> Fruit { get; set; }
public List<Pie> Pie { get; set; }
}
然后使用
Newtonsoft.Json.JsonConvert.DeserializeObject<AnyClassName>(jsonString)
如果您不知道数据合同,请使用
Newtonsoft.Json.JsonConvert.DeserializeObject(jsonString)
在这种情况下,您必须进行大量编码才能探测元素是否存在并提取值。