当数组具有多个类型时,将JSON字符串反序列化为类的最佳方法

当数组具有多个类型时,将JSON字符串反序列化为类的最佳方法,json,vb.net,json.net,Json,Vb.net,Json.net,使用下面的JSON示例和Newtsoft,我试图找出类定义应该是什么来反序列化它。这份备忘录是一系列文集。但是braums有不同的关键/价值观。 我有一个关于类的例子。如果我将memo反序列化为字符串数组,那么使用代码示例TestMemo()中的正确类反序列化字符串。如果我试图让数组成为类,它不会。 我必须分两步来完成吗? 创建返回正确类的函数的最佳方法是什么? 有没有一种方法可以让反序列化有一个“post”过程,这样我就可以在备忘录被拆分后执行它 { "x": &quo

使用下面的JSON示例和Newtsoft,我试图找出类定义应该是什么来反序列化它。这份备忘录是一系列文集。但是braums有不同的关键/价值观。 我有一个关于类的例子。如果我将memo反序列化为字符串数组,那么使用代码示例TestMemo()中的正确类反序列化字符串。如果我试图让数组成为类,它不会。 我必须分两步来完成吗? 创建返回正确类的函数的最佳方法是什么? 有没有一种方法可以让反序列化有一个“post”过程,这样我就可以在备忘录被拆分后执行它

{
  "x": "testx",
  "y": "testy",
  "memo": [
    "{'braums': {'printing_data': {'customerFirstName': 'xxxxxx', 'orderNumber': 4495, 'customerLastName': 'xxxxxx'}}}",
    "{'braums': {'cancellation_reasons': {'who': 'xxxxxxx', 'when': '11/18/2020 8:02 PM', 'why': 'called to cancel'}}}"
  ],
  "z": "testz"
}

编辑:注意课堂上的错误。它们的要点没有改变。

您确定这是实际的JSON吗?它看起来像是双重序列化
braums
不应该被引用,它应该是一个对象。这个JSON来自哪里?@Jimi是的,它是一个正确的表示。以下是完整的JSON,其名称已更改以保护不一致项。:-)粘贴中的字符串与此处显示的不同(缺少引号)。但问题是一样的:JObject是如何被字符串化并最终出现在
memo
数组中的?这是你能控制的吗?它通常不会自行发生无论如何,您可以使用自定义JsonSerializer:在
ReadJson()
中,查看何时有
JsonToken.StartArray
,验证它是
Order
对象中的
memo
属性,并改为反序列化为类对象。
memo
类型必须转换为包含
braums
对象的
列表。[…]当然,如果您可以在
memo
中找到的对象的属性是一致的,也就是说,如果该内容中有一个底层逻辑,并且您事先知道该内容是什么。-你使用这种格式可能是有原因的。也许这是一个局部工作,其中的值还没有找到它们的位置,或者打算被其他与本文描述的对象无关的对象在其他地方使用。因此,可能您实际上不需要将这些字符串与此JSON一起反序列化,因此双传递是一种明显的选择。这是你应该知道的。将
应用到
公共财产备忘录,作为列表(Braum)
其中
嵌入式文字转换器(T)
来自到,也来自到。这些回答了你的问题吗?它们是c#而不是vb.net。