使用条件定义将json反序列化到vb.net类中
我是一名中级程序员,正在试图找到解决vb.net中JSON反序列化问题的方法。我正在使用一个API(不是我的)进行一些产品更新,在这个API中,我必须获取产品,反序列化它,更改一些值,然后发布更新 我已经构建了一系列vb.net类来处理json文档的反序列化(newtonsoft.json),并且在大多数情况下都非常有效。然而,我在一些产品上遇到了一种情况,根据特定json对象的值,可以通过两种方式之一定义对象 以下是JSON的一个片段:使用条件定义将json反序列化到vb.net类中,json,vb.net,Json,Vb.net,我是一名中级程序员,正在试图找到解决vb.net中JSON反序列化问题的方法。我正在使用一个API(不是我的)进行一些产品更新,在这个API中,我必须获取产品,反序列化它,更改一些值,然后发布更新 我已经构建了一系列vb.net类来处理json文档的反序列化(newtonsoft.json),并且在大多数情况下都非常有效。然而,我在一些产品上遇到了一种情况,根据特定json对象的值,可以通过两种方式之一定义对象 以下是JSON的一个片段: "PriceGrids": [ { "IsBaseP
"PriceGrids": [
{
"IsBasePrice": false,
"PriceConfigurations": [
{
"Criteria": "Imprint Method",
"Value": [
"SILKSCREEN"
]
}
]
},
{
"IsBasePrice": true,
"PriceConfigurations": [
{
"Criteria": "Size",
"Value": [
{
"Attribute": "Length",
"Value": "25",
"Unit": "cm"
},
{
"Attribute": "Width",
"Value": "7.5",
"Unit": "cm"
},
{
"Attribute": "Height",
"Value": "14.5",
"Unit": "cm"
}
]
}
]
}
因此,根据IsBasePrice值,Value有两个定义(真/假)。我目前在类中定义了如下值
Private _Value As New List(Of String)
Public Property Value() As List(Of String)
Get
Return _Value
End Get
Set(value As List(Of String))
_Value = value
End Set
End Property
当然,如果它不是字符串列表,则会失败。我在任何地方都找不到处理这个问题的例子。在vb.net中,是否可以基于提供的Json处理条件对象定义 这些不同的类型是否需要包含在同一个帖子中?也许你可以发布多次(不同的对象)。不过听起来很奇怪。您还可以准备一个自定义类型转换器。但是,由于您有一个类需要同时保存不同的属性,因此第一个类型(
“Value”:[“SILKSCREEN”]
)的属性值仍然为空。没有办法知道在没有测试的情况下,接收机端是否可以接受这一点。顺便说一句,JSON在这里是无效的。很抱歉JSON代码无效。我尽了最大的努力,从这篇文章中提取一段代码来表达我的观点。不幸的是,它们必须包含在返回帖子中,否则另一端的API会创建一个新的产品条目,而不是更新现有条目,从而导致重复条目。我最初的想法是忽略反序列化时的字段,但因为它是必需的,所以这不是一个选项。您也可以简单地将值定义为IList(Of Object)
。这将同时进行反序列化和序列化,而不会对提交的内容产生疑问。如果您愿意,我可以发布一个可以与您在这里发布的JSON(修复)一起使用的类示例。但是,当然,我没有办法测试它,所以…我今天晚些时候会尝试测试一下。谢谢你提供一个样品。这非常有效。蒂吉米!这些不同的类型是否需要包含在同一个帖子中?也许你可以发布多次(不同的对象)。不过听起来很奇怪。您还可以准备一个自定义类型转换器。但是,由于您有一个类需要同时保存不同的属性,因此第一个类型(“Value”:[“SILKSCREEN”]
)的属性值仍然为空。没有办法知道在没有测试的情况下,接收机端是否可以接受这一点。顺便说一句,JSON在这里是无效的。很抱歉JSON代码无效。我尽了最大的努力,从这篇文章中提取一段代码来表达我的观点。不幸的是,它们必须包含在返回帖子中,否则另一端的API会创建一个新的产品条目,而不是更新现有条目,从而导致重复条目。我最初的想法是忽略反序列化时的字段,但因为它是必需的,所以这不是一个选项。您也可以简单地将值定义为IList(Of Object)
。这将同时进行反序列化和序列化,而不会对提交的内容产生疑问。如果您愿意,我可以发布一个可以与您在这里发布的JSON(修复)一起使用的类示例。但是,当然,我没有办法测试它,所以…我今天晚些时候会尝试测试一下。谢谢你提供一个样品。这非常有效。蒂吉米!