VB.net Visual basic:从带有子数组的字典创建applocation/json字符串

VB.net Visual basic:从带有子数组的字典创建applocation/json字符串,vb.net,Vb.net,在VB.Net Visual Basic中创建包含子数组的JSON数组时遇到问题。我尝试了许多不同的方法,但不知道如何使子数组显示为数组(它缺少[and])。 我当前的代码(为了清晰起见,在此缩写)是: 这将创建如下序列化对象(缺少[and]: { "EmployeeCode":"020000", "FirstName":"First", "MiddleNa

在VB.Net Visual Basic中创建包含子数组的JSON数组时遇到问题。我尝试了许多不同的方法,但不知道如何使子数组显示为数组(它缺少[and])。
我当前的代码(为了清晰起见,在此缩写)是:

这将创建如下序列化对象(缺少[and]:

    {   
      "EmployeeCode":"020000",
      "FirstName":"First",
      "MiddleName":"Middle",
      "LastName":"Last",
      "StartDate":"2003-01-01",
      "Identifiers"
        :{
          "ID":"020000@3179.TWP"
        },
      "States"
        :{
          "EffectiveDate":"2020-11-01",
          "Variables"
            :{
              "EmployeeType":"RFT",
              "Department":"406110",
              "Home1":"SelfEdit"
            }
         }
      }            
在添加到主对象之前,我已尝试序列化子字典,方法是:

    EEDict.Add("Identifiers", Newtonsoft.Json.JsonConvert.SerializeObject(IdDict))
    Dim StateDict As New Dictionary(Of Object, Object) From {
      {"EffectiveDate", DataEffDate},
      {"Variables", Newtonsoft.Json.JsonConvert.SerializeObject(VarDict)}
    }
    EEDict.Add("States", Newtonsoft.Json.JsonConvert.SerializeObject(StateDict))
所有这些只是在大括号之间添加斜线,仍然没有[]

    "States":"
      {
        \"EffectiveDate\":\"2020-11-01\",
        \"Variables\":\" 
        {
           \\\"EmployeeType\\\":\\\"RFT\\\",
           \\\"Department\\\":\\\"406110\\\",
           \\\"Home1\\\":\\\"SelfEdit\\\"
        }\"
      }"
输出应如下所示:

    "States": [
      {
        "EffectiveDate": "Type: DateValue, Notes: YYYY-MM-DD",
        "Variables": 
         {
           "EmployeeType": "Type: StringValue",
           "Title": "Type: StringValue",
           "Department": "Type: StringValue",
           "Home1": "Type: StringValue"
         }
      }
    ]

当我去提交数组时,它在标识符(第一个子数组)部分返回空错误,找不到ID。有人能给我指出正确的方向吗。

你需要
声明
成为
列表(对象)
而不是
字典(对象、对象)

列表(对象)
由您需要的
[{obj}]
方括号分隔

对象
由大括号
{name:value}
分隔


字典(字符串、对象)
可以
{name:{obj}}

我解决了部分问题;我正在“序列化”子数组不止一次。我在C#中发现了一个使用具有公共属性的类对象的示例。C不是我这里最强的语言,所以我需要解释和转换它,看看它是否适用于我的应用程序。有一些不错的(免费的)在线代码转换器,可以将工作的C#转换为vb.net。Newtonsoft网站在序列化后提供了一些非常好的对象示例和相应的json。谢谢!为Newtonsoft网站添加了书签。转换器在我的浏览器中引发了一个异常;它因某种原因被阻止。tgolisch;Spot on!这就是我所关注的部分缺少。我正在通过使用类对象进一步完善解决方案,而您关于目录和列表对象如何序列化的注释是关键。简直太棒了!谢谢!这是类对象中的示例代码,根据您的注释,它看起来将起作用。公共标识符作为新列表(字典(字符串,对象))公共变量作为新字典(字符串,对象)公共状态作为新列表(字典(字符串,对象))
    "States": [
      {
        "EffectiveDate": "Type: DateValue, Notes: YYYY-MM-DD",
        "Variables": 
         {
           "EmployeeType": "Type: StringValue",
           "Title": "Type: StringValue",
           "Department": "Type: StringValue",
           "Home1": "Type: StringValue"
         }
      }
    ]
Dim StateDict As New List(Of Object) From {
  {"EffectiveDate", DataEffDate},
  {"Variables", VarDict}
}
EEDict.Add("States", StateDict)