如何使用NewtonSoft的JSON类反序列化JSON对象?

时间:2014-01-16 00:00:02

标签: .net json vb.net

我正在使用VB.NET中的产品,并使用NewtonSoft的JSON类来处理JSON。我不知道如何使用它,我似乎无法想象你的文档。基本上,给定一个JSON字符串,我想拉出金额值。这就是我所拥有的:

Dim serverResponse as String
Dim urlToFetch as String
Dim jsonObject as Newton.JSON.JSONConvert
Dim wc as new System.Net.WebClient
Dim amountHeld as String

urlToFetch = "someurl"
serverResponse = wc.DownloadString(urlToFetch)
jsonObject = Newtonsoft.Json.JsonConvert.DeserializeObject(serverResponse)

现在,在这一点上,我希望能够做到

amountHeld = jsonObject.Name["amount"]

获取金额的价值,但我不能。我显然做错了。这样做的正确方法是什么?

谢谢! 安东尼

2 个答案:

答案 0 :(得分:2)

您可以使用json.net反序列化为特定类型或匿名类型,如下所示:

Dim serverResponse as String
Dim jsonObject as object
Dim amountHeld as String

serverResponse = "{amountheld: ""100""}"

Dim deserializedResponse = New With {.amountHeld = "1" }

jsonObject = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(serverResponse, deserializedResponse)

Console.WriteLine(jsonObject.amountHeld)

这会创建一个匿名类型,其属性为'amountHeld',然后json.net会将json反序列化为。

另一种方法是使用Linq 2 JSON解析json并从中提取你想要的值,类似于linq 2 xml:

Dim serverResponse as String
Dim jsonObject as object
Dim amountHeld as String

serverResponse = "{amountheld: ""100""}"

Dim o as JObject = JObject.Parse(serverResponse)

amountHeld = o.item("amountheld").ToString()

Console.WriteLine(amountHeld)

JObject类位于Newtonsoft.Json.Linq命名空间

Here是关于linq 2 json的更多信息,不幸的是所有的例子都在C#中,但它可以帮助你做什么可以做什么和不能做什么

答案 1 :(得分:0)

以这种方式试试

var jsonObject = JsonObject.Parse(serverResponse);
var amount= jsonObject.GetNamedString("amount");