JSON:创建一个数组节点VB.NET

时间:2016-02-26 21:57:15

标签: asp.net json vb.net

我对此很陌生。我希望有人可以帮我弄清楚如何做到这一点 所以我在我的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"的任何想法(列表)在这个序列化数组里面?

提前致谢!

1 个答案:

答案 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个