VB2010 преобразует ответ Json в listview

#json #vb.net

#json #vb.net

Вопрос:

У меня есть ответ json, который выглядит следующим образом

 {"RandomUsername1":
{"Name":"Aaron Baker","Team":"Mavericks","Town":"Chester","Scores":{"lowest":1,"highest":10,"average":5}},
"RandomUsername2":
{"Name":"Dan Williams","Team":"Lions","Town":"Doncaster","Scores":{"lowest":0,"highest":8,"average":4}},
"RandomUsername3":
{"Name":"Oliver Smith","Team":"Hudsons","Town":"Oxford","Scores":{"lowest":4,"highest":14,"average":9}}
}
  

Я использовал этот код, когда был 1 ключ, но когда есть несколько ключей, например «RandomUsername1», «RandomUsername2», «RandomUsername3», я застрял и не уверен, как изменить код, который будет отображаться в listview, где перечислены все пользователи.

 Imports Newtonsoft.Json
Imports app_functions
Imports System.Net

Public Class UserInfo

    Private Const UserUrl As String = "https://www.anysitename/userinfo"


    Public Shared Function GetUser() As UserInfo

        If Not app_funcs.CanWeCallAPI Then
            Return Nothing
        End If

        Dim www As New WebClient()
        Dim res As Byte() = www.UploadValues(UserUrl, AuthHeader)
        Dim strRes As String = System.Text.Encoding.UTF8.GetString(res)

        Dim err As String = app_funcs.DetectError(strRes)

        If Not String.IsNullOrEmpty(err) Then
            Return Nothing
        End If

        Return Deserialize(strRes)


    End Function


    Public Shared Function Deserialize(json As [String]) As UserInfo
        Return JsonConvert.DeserializeObject(Of UserInfo)(json)
    End Function

End Class
  

Если бы кто-нибудь мог дать мне несколько указаний, я был бы очень признателен.

Спасибо,

Энди

Комментарии:

1. Форматирование этого JSON не очень хорошее — в итоге вы получаете три разных типа объектов с именем каждого из них RandomUserX . Вы можете это контролировать?

2. Я вообще не могу это контролировать, обратно может быть передано еще больше, в настоящее время это 3 randomuser, но может быть до 10 разных имен пользователей

3. На данный момент у вас нет никакого хорошего решения. Вы могли бы создать переходный объект, содержащий 10 имен свойств RandomUsernameX, а затем преобразовать его в список в свой «хороший» объект. Другим вариантом является использование библиотеки .net, которая позволяет вам самостоятельно анализировать json вместо автоматической десириализации или которая позволяет вам выполнять более сложную десириализацию.