我对此很陌生。我希望有人可以帮我弄清楚如何做到这一点 所以我在我的vb文件中有这个导入
Import Namespace="System.Web.Script.Serialization"
当然我可以打印JSONObjects然而我想要的是用数组节点打印对象。
Dim arr As New List(Of arr)()
arr.Add(New arr With{.arrId = 0, .arrName = "XXX"})
arr.Add(New arr With{.arrId = 1, .arrName = "YYY"})
如果我序列化它,它将打印出来:
[{"arrId" : 0, "arrName" : "XXX"},{"arrId" : 1, "arrName" : "YYY"}]
但我想要的是可以指定那些对象的东西,比如单词" arrs" e.g。
["arrs":{"arrId" : 0, "arrName" : "XXX"},{"arrId" : 1, "arrName" : "YYY"}]
关于我如何添加" arrs"的任何想法(列表)在这个序列化数组里面?
提前致谢!
答案 0 :(得分:1)
这是无效的:
["arrs":{"arrId" : 0, "arrName" : "XXX"},{"arrId" : 1, "arrName" : "YYY"}]
数组中的第一项是:
"arrs":{"arrId" : 0, "arrName" : "XXX"}
应该是
{"arrs":{"arrId" : 0, "arrName" : "XXX"}}
,第二项将是
{"arrId" : 1, "arrName" : "YYY"}
虽然我不认为那是你想要/想要的......
免责声明:我的vb已生锈,因此需要进行改进。
您需要将其“封装”在另一个对象中:
Class Container
Public arrs As List(Of arr)
End Class
Class Child
Public arrId As Integer
Public arrName As String
End Class
所以你可以这样做:
Sub Main()
Dim arr As New List(Of Child)()
arr.Add(New Child With {.arrId = 0, .arrName = "XXX"})
arr.Add(New Child With {.arrId = 1, .arrName = "YYY"})
'Object
Dim foo As New Container With {.arrs = arr}
'Array
Dim bar As New List(Of Container)()
bar.Add(New Container With {.arrs = arr})
Console.WriteLine("foo serialized: " + New JavaScriptSerializer().Serialize(foo))
Console.WriteLine("bar serialized: " + New JavaScriptSerializer().Serialize(bar))
End Sub
结果是:
foo serialized: {"arrs":[{"arrId":0,"arrName":"XXX"},{"arrId":1,"arrName":"YYY"}]}
bar serialized: [{"arrs":[{"arrId":0,"arrName":"XXX"},{"arrId":1,"arrName":"YYY"}]}]
... H个