2014-07-01 65 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