Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用条件定义将json反序列化到vb.net类中_Json_Vb.net - Fatal编程技术网

使用条件定义将json反序列化到vb.net类中

使用条件定义将json反序列化到vb.net类中,json,vb.net,Json,Vb.net,我是一名中级程序员,正在试图找到解决vb.net中JSON反序列化问题的方法。我正在使用一个API(不是我的)进行一些产品更新,在这个API中,我必须获取产品,反序列化它,更改一些值,然后发布更新 我已经构建了一系列vb.net类来处理json文档的反序列化(newtonsoft.json),并且在大多数情况下都非常有效。然而,我在一些产品上遇到了一种情况,根据特定json对象的值,可以通过两种方式之一定义对象 以下是JSON的一个片段: "PriceGrids": [ { "IsBaseP

我是一名中级程序员,正在试图找到解决vb.net中JSON反序列化问题的方法。我正在使用一个API(不是我的)进行一些产品更新,在这个API中,我必须获取产品,反序列化它,更改一些值,然后发布更新

我已经构建了一系列vb.net类来处理json文档的反序列化(newtonsoft.json),并且在大多数情况下都非常有效。然而,我在一些产品上遇到了一种情况,根据特定json对象的值,可以通过两种方式之一定义对象

以下是JSON的一个片段:

"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(修复)一起使用的类示例。但是,当然,我没有办法测试它,所以…我今天晚些时候会尝试测试一下。谢谢你提供一个样品。这非常有效。蒂吉米!