2011-03-18 103 views
5

我是VB新手,嘗試編寫一個導出和導入JSON的web服務。JSON.Net VB反序列化不起作用

我使用JSON.NET 3.5,可以精細序列:

我Token類是:

<DataContract()> _ 
    Public Class Token 
    <DataMember()> _ 
    Public TokenID As String 

    <DataMember()> _ 
    Public Issued As Date 

    <DataMember()> _ 
    Public Expires As Date 

    <DataMember()> _ 
    Public UserName As String 

    <DataMember()> _ 
    Public CompanyID As String 

    <DataMember()> _ 
    Public ApplicationID As Double 

    <DataMember()> _ 
    Public UserID As Double 

    <DataMember()> _ 
    Public DeviceID As Double 

    <DataMember()> _ 
    Public DeviceSerialNumber As String 

    <DataMember()> _ 
    Public IsValid As Boolean 

    <DataMember()> _ 
    Public DebugText As String 

(我開始與MS的序列化,但想我會嘗試JSON.NET)

我連載:

昏暗ThisToken作爲新令牌 ThisToken.DebugText = 「嗒嗒」 等

JSONString = Newtonsoft.Json.JsonConvert.SerializeObject(ThisToken) 

而且我從web服務的輸出:

{ 「TokenID」: 「9eaae348-5cbd-46ac-8ba9-83720ac07740」, 「發行」:「/日期(1300422761886 + 0800)/ 」, 「過期」: 「/日期(1300465961886 + 0800)/」, 「用戶名」: 「1234」, 「CompanyID」: 「6」, 「的applicationID」:1.0, 「用戶ID」:29.0, 「的DeviceID」:1.0 ,「DeviceSerialNumber」:「9149520800758」,「IsValid」:true,「DebugText」:「」}

到目前爲止我認爲這麼好。

爲了測試反序列化是否奏效,我想我會嘗試並反序列化我剛剛序列化的內容。因此,我創建了一個接受字符串的web服務,並將其粘貼到上面。

代碼deseralise是:

Dim ThisToken As New Token 

    ThisToken = Newtonsoft.Json.JsonConvert.DeserializeObject(JSonString) 

當我運行使用VS2005內部調試/測試IE瀏覽器的代碼,我得到一個HTTP500內部服務器錯誤。

如果我在序列化後立即嘗試反序列化,我也會遇到同樣的問題。

我認爲問題的一部分是,我所遵循的代碼是c#;從json.net頁:

Product deserializedProduct = JsonConvert.DeserializeObject<Product>(json); 

我可以看到,在C#中有一個<Product>一部分是不容易apparant在VB?

我毫不懷疑,newtonsoft json.net產品工作正常;我確信我沒有做正確的事情。

幫助?

安德魯

回答

8

的VB相當於

Product deserializedProduct = JsonConvert.DeserializeObject<Product>(json); 

Dim deserializedProduct as Product = JsonConvert.DeserializeObject(Of Product)(Json) 

所以我想你想

Dim ThisToken as Token = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Token)(JSonString) 
+0

感謝堆;這樣可行。 – andrew 2011-03-18 06:12:00

+0

我需要註冊並登錄,然後才能進行投票並標記爲完整的東西.. andrew – andrew 2011-03-18 06:12:49

+0

如果我沒有要反序列化的類/類型,該怎麼辦?就像我在c#中有這樣的聲明,dynamic deserializedProduct = JsonConvert.DeserializeObject(json);在VB.NET上會有什麼相同的結果?看到的問題http://stackoverflow.com/questions/13890267/vb-net-deserialize-json-to-anonymous-object-using-newtonsoft-returned-error – 2012-12-15 09:05:23