2012-10-15 1 views
1

у меня есть этот ответ JSON массива:JSON массив класса

[ 
    { 
    "status": "active", 
    "url": "https:\/\/ikiosk.podio.com\/dev\/apps\/myusers", 
    "url_label": "myusers", 
    "space_id": 550628, 
    "link_add": "https:\/\/ikiosk.podio.com\/dev\/apps\/2304568\/items\/new", 
    "app_id": 2304568, 
    "date_field": false, 
    "link": "https:\/\/ikiosk.podio.com\/dev\/apps\/myusers", 
    "config": { 
     "allow_edit": true, 
     "description": "", 
     "item_name": "myusers", 
     "type": "standard", 
     "icon_id": 251, 
     "allow_create": true, 
     "usage": "", 
     "icon": "251.png", 
     "external_id": null, 
     "name": "myusers" 
    }, 
    "url_add": "https:\/\/ikiosk.podio.com\/dev\/apps\/2304568\/items\/new" 
    }, 
    { 
    "status": "active", 
    "url": "https:\/\/ikiosk.podio.com\/dev\/apps\/requests", 
    "url_label": "requests", 
    "space_id": 550628, 
    "link_add": "https:\/\/ikiosk.podio.com\/dev\/apps\/2299738\/items\/new", 
    "app_id": 2299738, 
    "date_field": true, 
    "link": "https:\/\/ikiosk.podio.com\/dev\/apps\/requests", 
    "config": { 
     "allow_edit": true, 
     "description": "", 
     "item_name": "request", 
     "type": "standard", 
     "icon_id": 251, 
     "allow_create": true, 
     "usage": "", 
     "icon": "251.png", 
     "external_id": null, 
     "name": "Requests" 
    }, 
    "url_add": "https:\/\/ikiosk.podio.com\/dev\/apps\/2299738\/items\/new" 
    } 
] 

А вот классы:

Public Class GetAllApps 
    Public pApplication As PodioApplication 
End Class 


Public Class PodioApplication 
    Public status As String 
End Class 

Мой код здесь:

Dim client As New RestClient() 
client.BaseUrl = "https://api.podio.com/" 

Dim request As New RestRequest() 
request.RequestFormat = DataFormat.Json 
request = New RestRequest() 
request.Method = Method.[GET] 
request.RequestFormat = DataFormat.Json 
request.AddParameter("oauth_token", access_token) 
request.Resource = "/app/v2//" 

Dim resp = client.Execute(Of List(Of GetAllApps))(request) 
RichTextBox1.Text = resp.Content 

Dim pApps As List(Of PodioApplication) = resp.Data.[Select](Function(c) c.pApplication).ToList() 
MsgBox(pApps.Count) 

For Each p As PodioApplication In pApps 
    MsgBox(p.status) 
Next 

массив json, который я написал ранее, является результатом resp.Content. В строке кода MsgBox (pApps.Count) принимаю правильное число (в этом случае это 2). Но в каждом цикле я принимаю ошибку исключения: «Ссылка на объект не установлена ​​в экземпляр объекта».

Есть ли проблемы с моей реализацией, что-то не хватает?

+1

Вы обстреливали это в отладчике? Я предполагаю, что ваш код десериализации (который вы не включили в свой вопрос) сломан и дает вам массив с 2 'null' в нем. (Или любые люди VB называют «null».) – millimoose

+0

Я добавил все строки кода, которые я написал для этого. Проверьте это, пожалуйста. – kokazani

+1

Я не могу найти 'RestClient' или' RestRequest' в MSDN, из какой библиотеки они. Кроме того, вы проверили в отладчике, чтобы узнать, что на самом деле находится в 'pApps'? (Я предполагаю, что вы уже проверили, подходит ли ваш ответ JSON в строке 'RichTextBox1.Text'.) – millimoose

ответ

1

Наконец,

Я сделал это просто:

Dim client As New RestClient() 
     client.BaseUrl = "https://api.podio.com/" 
     Dim request As New RestRequest() 
     request.RequestFormat = DataFormat.Json 
     request = New RestRequest() 
     request.Method = Method.[GET] 
     request.RequestFormat = DataFormat.Json 
     request.AddParameter("oauth_token", access_token) 
     request.Resource = "/app/v2//" 
     Dim response = client.Execute(request) 
     Dim ser As New JavaScriptSerializer() 
     Dim pApps As List(Of PodioApplication) = ser.Deserialize(Of List(Of PodioApplication))(response.Content) 

Теперь Papps имеют правильные данные из ответа.

 Смежные вопросы

  • Нет связанных вопросов^_^