2012-08-01 79 views
0

我已經jQuery的通過HTML表循環,並把它變成一個對象,然後用JSON.stringify轉換的JavaScript對象JSON,見下文類不匹配高達JSON字符串

{ 
"0":{"name":"fdgd","surname":"ssdt"}, 
"1":{"name":"fdsf","surname":"vn"}, 
"2":{"name":"dfsb","surname":"mry"}, 
"3":{"name":"hsdsdfry","surname":"smh"} 
} 

我的問題是使用JSON JSON.net和班組長IM正在試圖匹配它的JSON轉換成我tableT對象

它的Jsonconvert我得到空的對象後,可以請你告訴我,什麼是錯我的班組長。我使用vb.net和.net 2.所以我想我的問題是我如何匹配我的tableT類到我的json字符串?感謝您的幫助。

Dim tableOBJ As tableT = JsonConvert.DeserializeObject(Of tableT)(myJSON) 


Public Class tableT 

    Private _allRows As List(Of Rows) 

    Property AllRows As List(Of Rows) 
     Get 
      Return _allRows 
     End Get 
     Set(ByVal value As List(Of Rows)) 
      _allRows = value 
     End Set 
    End Property 

End Class 

Public Class Rows 

    Private _name As String 
    Private _surname As String 

    Property name As String 
     Get 
      Return _name 
     End Get 
     Set(ByVal value As String) 
      _name = value 
     End Set 
    End Property 

    Property surname As String 
     Get 
      Return _surname 
     End Get 
     Set(ByVal value As String) 
      _surname = value 
     End Set 
    End Property 

End Class 

回答

2

沒有測試它,它看來,

JsonConvert.DeserializeObject(Of tableT)(myJSON) 

確實應該更多的東西一樣

JsonConvert.DeserializeObject(Of List(Of Rows))(myJSON) 

因爲沒有任何方式JsonConvert知道你想要的行在AllRows對象中。

所以,你的代碼看起來更象:

Dim tableOBJ As New tableT 
tableOBJ.AllRows = JsonConvert.DeserializeObject(Of List(Of Rows))(myJSON) 

**編輯**

測試之後,我才能夠得到這個通過修改JSON字符串看起來更上班就像我所理解的Json數組應該看起來一樣。

具體來說,如果我改變了數組的樣子:

{"AllRows": [ 
{"name":"fdgd","surname":"ssdt"}, 
{"name":"fdsf","surname":"vn"}, 
{"name":"dfsb","surname":"mry"}, 
{"name":"hsdsdfry","surname":"smh"} 
]} 

然後你原來的代碼工作正常。

你原來的Json正在做的是期望在類中有屬性,稱爲0,1,2和3類型的行,這是不可能的與VB是,我敢肯定,不是你在找什麼去完成。

您可以通過添加屬性零,一,二驗證這一點,和類型行的三到平板電腦:

Public Class tableT 

    Public Zero As New Rows 
    Public One As New Rows 
    Public Two As New Rows 
    Public Three As New Rows 

改變你的JSON來:

{ 
"Zero":{"name":"fdgd","surname":"ssdt"}, 
"One":{"name":"fdsf","surname":"vn"}, 
"Two":{"name":"dfsb","surname":"mry"}, 
"Three":{"name":"hsdsdfry","surname":"smh"} 
} 

和反序列化使用原創課。你會看到新的屬性被填充了你的json字符串的內容。

+0

我可以寄給你我的測試項目嗎?請?謝謝你的幫助 – 2012-08-01 18:57:33

+0

不能反序列化當前的JSON對象(例如{「name」:「value」})到類型'System.Collections.Generic.List'1 [Rows]'中,因爲類型需要一個JSON數組(例如[1 ,2,3])來正確地反序列化。 要修復此錯誤,請將JSON更改爲JSON數組(例如[1,2,3])或更改反序列化的類型,以使其爲正常的.NET類型(例如,不是像整數這樣的基本類型,也不是集合類型像一個數組或列表)可以從JSON對象反序列化。 JsonObjectAttribute也可以添加到類型中,以強制它從JSON對象反序列化。 路徑'0',第1行,第5位。 – 2012-08-01 19:02:24