2014-07-01 102 views
-1

我使用json.net庫,我有這個JSON文件我要反序列化:如何使用json.net在vb.net中反序列化此json文件?

{ 
"jsonVersion": 3, 
"levelMasteryScore3": 70000, 
"boosts": { 
"preBoostSupergems": { 
    "enabled": 1, 
    "jsonVersion": 1 
}, 
"preBoostThreeMoves": { 
    "enabled": 1, 
    "jsonVersion": 1 
}, 
"preBoostColorSplash": { 
    "enabled": 1, 
    "jsonVersion": 1, 
    "excludedColors": [ 
    "G" 
    ] 
}, 
"jsonVersion": 1 
}, 
"name": "0017", 
"moveLimitObjective": { 
"moveLimit": 19, 
"jsonVersion": 1 
}, 
"gemSpawnChance": { 
"R": 20, 
"B": 20, 
"G": 0, 
"P": 20, 
"Y": 20 
}, 
"levelMasteryScore1": 20000, 
"board": { 
"tiles": [ 
    [ 
    "X", 
    "X", 
    "X", 
    "X", 
    "X", 
    "X", 
    "X" 
    ], 
    [ 
    "X", 
    "X", 
    "X", 
    "X", 
    "X", 
    "X", 
    "X" 
    ], 
    [ 
    "X", 
    "X", 
    "X", 
    "X", 
    "X", 
    "X", 
    "X" 
    ], 
    [ 
    "A", 
    "A", 
    "A", 
    "A", 
    "A", 
    "A", 
    "A" 
    ], 
    [ 
    "A", 
    "E", 
    "A", 
    "E", 
    "A", 
    "E", 
    "A" 
    ], 
    [ 
    "A", 
    "J1", 
    "A", 
    "J1", 
    "A", 
    "J1", 
    "A" 
    ], 
    [ 
    "A", 
    "A", 
    "A", 
    "A", 
    "A", 
    "A", 
    "A" 
    ], 
    [ 
    "J1", 
    "J1", 
    "J1", 
    "E", 
    "J1", 
    "J1", 
    "J1" 
    ], 
    [ 
    "J1", 
    "J1", 
    "J1", 
    "J1", 
    "J1", 
    "J1", 
    "J1" 
    ] 
], 
"visibleSize": { 
    "width": 7, 
    "jsonVersion": 1, 
    "height": 9 
}, 
"pieces": [ 
    [ 
    "@", 
    "@", 
    "@", 
    "@", 
    "@", 
    "@", 
    "@" 
    ], 
    [ 
    "@", 
    "@", 
    "@", 
    "@", 
    "@", 
    "@", 
    "@" 
    ], 
    [ 
    "@", 
    "@", 
    "@", 
    "@", 
    "@", 
    "@", 
    "@" 
    ], 
    [ 
    "D", 
    "D", 
    "D", 
    "D", 
    "D", 
    "D", 
    "D" 
    ], 
    [ 
    "D", 
    " ", 
    "D", 
    " ", 
    "D", 
    " ", 
    "D" 
    ], 
    [ 
    "D", 
    " ", 
    "D", 
    " ", 
    "D", 
    " ", 
    "D" 
    ], 
    [ 
    "D", 
    "D", 
    "D", 
    "D", 
    "D", 
    "D", 
    "D" 
    ], 
    [ 
    " ", 
    " ", 
    " ", 
    " ", 
    " ", 
    " ", 
    " " 
    ], 
    [ 
    " ", 
    " ", 
    " ", 
    " ", 
    " ", 
    " ", 
    " " 
    ] 
], 
"jsonVersion": 2 
}, 
"levelMasteryScore2": 50000, 
"jellyObjective": { 
"jellyToRemove": 16, 
"jsonVersion": 1 
} 
} 

它看起來非常複雜,但我不想檢索以下元素:

  • moveLimitObjective": { "moveLimit": 19, "jsonVersion": 1

  • "gemSpawnChance": { "R": 20, "B": 20, "G": 0, "P": 20, "Y": 20 }

  • 的'瓷磚「和」 '塊

  • "jellyObjective": { "jellyToRemove": 16, "jsonVersion": 1 }

我見過很多在web上的例子,但我想不出它「與塊」出。我甚至不知道從哪裏開始。

預先感謝您的任何形式的幫助

回答

0

使用json2csharp的JSON數據轉換爲CSHARP類,然後使用another converter所產生的代碼轉換到vb.net。

一旦你在vb.net中建立了你想要從JSON獲得的數據的模型,你可以使用JSON.NET的反序列化對象方法並獲取你想要的屬性。例如:

假設您已經設置了建模json對象的.NET類。我會打電話給頂層對象Game

Dim json As String 
Dim game As Game = JsonConvert.DeserializeObject(Of Game)(json) 
MessageBox.Show(game.GemSpawnChance) 

一些接近的應該工作。

這個例子提供了一些方向,但做更多的研究會有幫助。也許從Newtonsoft.Json page開始。

+0

這是另一個很好的轉換器,將輸出到您選擇的語言:http://jsontodatacontract.azurewebsites.net/ – jrsconfitto

+0

哇,這個轉換工具非常方便。還有一件事:我如何處理輸出?我是否將其添加到我的項目中? – KevinKZ

+0

是的,你可以將它作爲一個新的類(在一個文件中)添加到你的項目中。 – jrsconfitto