json反序列化为选择类
json反序列化为选择类
我有一个问题,如何更好地解决它。
我有一个包含JSON的字符串,想要将其转换为类。
我知道可以使用以下代码:
var json = JsonConvert.DeserializeObject(stringJson);
问题在于我有几个类,不知道如何优雅地选择应该使用哪个类。
我知道一种方法,但我认为它很糟糕。例如:
try { var json = JsonConvert.DeserializeObject(stringJson); } catch() {} try { var json = JsonConvert.DeserializeObject (stringJson); } catch() {}
还有其他方法吗?
编辑:
我有8-10个不同版本的结果,对于每个版本,我都知道它的结构(版本数量可能会变化)。
问题出现的原因是在进行JSON反序列化时,无法确定要将JSON数据转换成哪个类的实例。解决方法有以下几种:
方法1:
在反序列化时,将JSON数据转换成JObject对象,并在JObject对象中使用switch语句根据"type"字段的值选择相应的类进行处理。
方法2:
同样是先将JSON数据转换成JObject对象,然后使用ToObject方法获取JObject对象的类型,并根据类型的名称进行选择。
方法3:
可以通过继承基类的方式,定义多个类来处理不同类型的JSON数据。定义一个基类MyClass,然后分别定义MyClass1、MyClass2等子类,根据JSON数据的"type"字段的值选择相应的子类进行处理。
以上是对原文中的内容进行整理得到的解决方法。根据问题描述来看,可能会遇到一些异常情况,具体原因需要进一步分析。