我正在使用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"]
获取金额的价值,但我不能。我显然做错了。这样做的正确方法是什么?
谢谢! 安东尼
答案 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");