2011-09-20 4 views
0

데이터 형식 : 내가으로 역 직렬화 할 때JavaScriptSerializer 수없는 나는이처럼 보이는 일부 JSON 데이터가

<Serializable()> _ 
Public Class User 
    Private _name As String 
    Private _id As String 

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

    Public Property id() As String 
     Get 
      Return _id 
     End Get 
     Set(ByVal value As String) 
      _id = value 
     End Set 
    End Property 
End Class 

<Serializable()> 
Public Class UserData 
    Private _data As List(Of User) 

    Public Property data() As List(Of User) 
     Get 
      Return (_data) 
     End Get 

     Set(ByVal value As List(Of User)) 
      _data = value 
     End Set 
    End Property 

End Class 

: 내가 지금 같은 serializeable 한 쌍의 클래스가

{ 
    "data": 
    [{ 
     "name":"John Smith", 
     "id":"12345" 
    }] 
} 

을 오브젝트 :

Dim serializer As New JavaScriptSerializer() 
Dim userResult As Object = serializer.DeserializeObject(json) 

키 "데이터"가있는 루트 오브젝트 하나를 가져오고, 키 2 개가있는 다른 오브젝트의 값이 2입니다. "name"과 "id", 그리고 예상 할 수있는 적절한 값. 그러나 해당 객체를 UserData 유형으로 캐스팅하려고 시도하면 Nothing을 반환합니다. 나는이 코드를 어느 시점에서 작동 시켰지만 이제는 그 코드로 돌아가서 다시 사용하려고 시도하고있다. 코드 썩음이 설정되어 작동하지 않는 것 같다. 여기

내가 UserData 개체로 직렬화 복원 된 데이터를 얻기 위해 시도하고 방법입니다

Dim userResult As UserData = TryCast(serializer.DeserializeObject(json), UserData) 

답변

0

을 나는

Dim userResult As UserData = serializer.Deserialize(Of UserData)(json) 

Dim userResult As UserData = TryCast(serializer.DeserializeObject(json), UserData) 

을 변경하여이 문제를 해결할 수 있었다

정확히 무엇이 기능상의 차이인지는 모르겠지만 그게 내가 원하는 결과를 얻었습니다.

관련 문제