.NET中Json反序列化的问题

时间:2016-03-03 16:02:23

标签: c# json vb.net deserialization restsharp

我构建了以下用于存储数据的类(帮助也可以在c#中)

reduce = function(key, stuff){ 
                              var x = stuff.toString();
                              var z = Array.from( new Set(x.split(','))).toString(); 
                              return z
                             };

我以json格式接收数据如下:

Public Class DatasourceInfos
    Public Property DSContainer() As List(Of DatasourceInfo)
End Class

Public Class DatasourceInfo
    Public Property name As String
    Public Property description As String
    Public Property created As String
    Public Property modified As String
    Public Property identifier As String
    Public Property href As String
    Public Property cacheAvailable As Boolean
    Public Property id As ULong
End Class

使用[{ "name":"MyName1", "description":"MyDescription1", "created":1244193265000, "modified":1264515442000, "identifier":"Identifier==", "href":"https://....", "cacheAvailable":true, "id":29}, {"name":"MyName2", "description":"MyDescription2", "created":1244193265000, "modified":1264515442000, "identifier":"Identifier==", "href":"https://....", "cacheAvailable":true, "id":30}] (解决方案不能使用RestSharp)我尝试将数据放入我的班级:

RestSharp

但是查看Public Function getDatasources(ByVal _token As String) As String Dim client = New RestClient(_baseURI) Dim request = New RestRequest("/data", Method.GET) request.AddHeader("Authorization", "Basic " + _token) Dim response = client.Execute(Of DatasourceInfos)(request) Return response End Function 没有映射到我的类。谁能告诉我我做错了什么?我将此代码与response object上的许多其他代码进行了比较,但我看不出,有什么问题。

1 个答案:

答案 0 :(得分:1)

在显示的json中,没有任何与您的DatasourceInfos容器类相关的内容。为此,json看起来像:

{
    "DSInfoItems":
     ...all your json ....
}

至少JSON.NET在尝试反序列化为DatasourceInfos时会对格式大肆宣传,但会轻易地反序列化为DatasourceInfo的数组或列表:

Dim DS = JsonConvert.DeserializeObject(Of List(Of DataSource))(jstr)