如何使用json.net在vb.net中反序列化这个json文件?

时间:2014-07-01 13:52:10

标签: json vb.net

我正在使用json.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 }

我在网上看到了很多例子,但我无法弄明白。我甚至不知道从哪里开始。

提前感谢您提供任何帮助

1 个答案:

答案 0 :(得分:1)

使用json2csharp将json数据转换为csharp类,然后使用another converter将生成的代码转换为vb.net。

在vb.net中创建了一个类,您可以使用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开始。