我正在处理一个需要使用VB.net从服务器反序列化json发送的项目。问题是服务器可能会发送具有相同地址的不同json结构。 所以我想知道有没有办法将这些Json反序列化为不同的结构。
示例如下: Json1:
{"Success":1,
"ID":123456,
"Action":{
"Type":"Battle"
"Damage":555
"DropItems":[
{"Name":"name1","Type":"weapon"},
{"Name":"name2","Type":"weapon"}]}}
Json2:
{"Success":1,
"ID":123456,
"Action":{
"MaxCount":
"ItemName":"SampleItem"
"Description":"Some description string"}}
这些只是样本,Json有更多不同的处理方式。但是"成功"和"行动"属性总是存在。
答案 0 :(得分:1)
您可以使用JsonConvert.DeserializeObject<T>(String, JsonSerializerSettings)
尝试反序列化。
首先,为每个响应创建一个C#类。它应该包含JSON中出现的所有成员变量。 (即Action
,Battle
等所有格式都在JSON中指定的数据结构中
创建JsonSerializerSettings
对象并将MissingMemberHandling
设置为Error
,以便在序列化失败时抛出异常。
抓住该异常,然后对每个后续类型重试。如果它们都不起作用,那么这个类是错的,或者它是一个新的响应类型,你还没有为它做过类。