有没有办法自动反序列化不同的Json字符串到不同的结构vb.net

时间:2017-08-10 14:48:14

标签: json vb.net serialization

我正在处理一个需要使用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有更多不同的处理方式。但是"成功"和"行动"属性总是存在。

1 个答案:

答案 0 :(得分:1)

您可以使用JsonConvert.DeserializeObject<T>(String, JsonSerializerSettings)尝试反序列化。

首先,为每个响应创建一个C#类。它应该包含JSON中出现的所有成员变量。 (即ActionBattle等所有格式都在JSON中指定的数据结构中

创建JsonSerializerSettings对象并将MissingMemberHandling设置为Error,以便在序列化失败时抛出异常。

抓住该异常,然后对每个后续类型重试。如果它们都不起作用,那么这个类是错的,或者它是一个新的响应类型,你还没有为它做过类。