2016-02-26 138 views
1

我對此很陌生。我希望有人能幫助我弄清楚如何做到這一點 所以我有這樣的進口對我的VB文件JSON:創建一個數組節點VB.NET

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」例如那些對象

["arrs":{"arrId" : 0, "arrName" : "XXX"},{"arrId" : 1, "arrName" : "YYY"}] 

任何想法如何在此序列化數組中添加「arrs」(列表)?

在此先感謝!

回答

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"}]}] 

Hth ...

+0

foo one是我需要的一個。 :D謝謝你,先生! – Miko