提问人:David Hill 提问时间:10/25/2023 最后编辑:David Hill 更新时间:10/25/2023 访问量:67
如何对JSON对象进行多态反序列化?
How To Deserialize a JSON Object Polymorphicly?
问:
我正在尝试以 JSON 格式从 API 反序列化数据。我通过四种不同的查询来获取数据。它们如下所示:GetDatasetlist、GetParameterList、GetParameterValues 和 GetData。每个查询都返回一个格式相似的 JSON 格式字符串。格式如下:
API : {
Request :
{
RequestParam :
[{...}, {...}, {...}]
},
Results :
{
[Dataset],[Parameter],[ParamValue],[Data]
}
}
JSON 字符串的变量部分位于结果下,根据我正在执行的查询,我将获得 Dataset、Parameter、ParamValue 或 Data 之一。虽然我可以完全独立地处理每个案例并解决问题,但考虑到很多代码重叠,这似乎是不正确的决定。
所有四个潜在的返回对象在结构上都与另一个不同,但我想知道是否还有一种方法可以使用多态性来处理它们。
我创建的用于反序列化 JSON 代码的类如下:
public class QueryResults
{
public _API API { get; set; }
public List<_RequestParam> RequestParams { get { return API.Request.RequestParam; } }
}
public class _API
{
public _Request Request { get; set; }
public _Results Results { get; set; }
}
public class _Request
{
public List<_RequestParam> RequestParam { get; set; }
}
public class _RequestParam
{
public string ParameterName { get; set; }
public string ParameterValue { get; set; }
}
public class _Results
{
???
}
我已经尝试使用可为 null 的类型,但我使用的是 C# 7.3,这不允许这样做。
任何帮助都是值得赞赏的。谢谢!
答: 暂无答案
评论
API
Results