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