VB.NET使用newtonsoft返回的错误将JSON反序列化为匿名对象

时间:2012-12-15 07:21:08

标签: vb.net json json.net

我想将返回的JSON从VB.NET中的服务调用反序列化为匿名类型,但我遇到了错误。它使用动态类型在C#中工作,但我不知道如何在VB中执行它。

这是我从Web服务调用返回的JSON:

{"format":"png","height":564,"width":864}

这是我上面的VB代码json分配给param文本:

Dim testObj = Newtonsoft.Json.JsonConvert.DeserializeObject(text)

但是当我试图访问testObj.format时,抛出了带有消息

的异常
{"Public member 'format' on type 'JObject' not found."}

我已添加Option Strict Off。我不想使用Object / Class来反序列化JSON。如果它在C#中将其分配给动态类型将正常工作。

有人可以帮忙吗?我不是VB的专家,但我需要在VB上运行它。 TIA

2 个答案:

答案 0 :(得分:0)

Dim js As New System.Web.Script.Serialization.JavaScriptSerializer
Dim testObj = js.Deserialize(source, New Object().GetType())

然后您可以通过以下方式访问密钥(属性名称)/值:

value=testobj(key)

还有一件事,您可以通过以下方式访问Newtonsoft键(属性名称)/值:

value=testObj.item(key)

答案 1 :(得分:0)

Dim js As New System.Web.Script.Serialization.JavaScriptSerializer
Dim DeSerialObjEventData = New With {.Prop1 = String.Empty, .Prop2 = String.Empty, .Prop3 = String.Empty}...
Dim testObj = js.DeserializeAnnonomusType(source, DeSerialObjEventData)