Как правильно разобрать эту строку JSON

#vb.net

#vb.net

Вопрос:

У меня есть некоторый API, который возвращает следующий JASON, и я пытаюсь разобрать его, чтобы иметь возможность извлекать из любых атрибутов, которые я хочу.

Я пытаюсь разобрать JSON:https://pastebin.com/i06GRD0f

Я предполагаю, что правильным способом было бы загрузить все в массив, но я не могу заставить его работать правильно, поскольку это немного сбивает с толку все разные параметры.

 Imports System.Web.Script.Serialization


Public Class ServerAttributes
    Public Property assists() As String
    Public Property bestRankPoint() As String
    Public Property boosts() As String
    Public Property dBNOs() As String
    Public Property dailyKills() As String
    Public Property dailyWins() As String

    Public Property damageDealt() As String
    Public Property days() As String
    Public Property headshotKills() As String
    Public Property heals() As String
    Public Property killPoints() As String
    Public Property kills() As String

    Public Property longestKill() As String
    Public Property longestTimeSurvived() As String
    Public Property losses() As String
    Public Property maxKillStreaks() As String
    Public Property mostSurvivalTime() As String
    Public Property rankPoints() As String

    Public Property rankPointsTitle() As String
    Public Property revives() As String
    Public Property rideDistance() As String
    Public Property roadKills() As String
    Public Property roundMostKills() As String
    Public Property roundsPlayed() As String

    Public Property suicides() As String
    Public Property swimDistance() As String
    Public Property teamKills() As String
    Public Property timeSurvived() As String
    Public Property top10s() As String
    Public Property vehicleDestroys() As String

    Public Property walkDistance() As String
    Public Property weaponsAcquired() As String
    Public Property weeklyKills() As String
    Public Property weeklyWins() As String
    Public Property winPoints() As String
    Public Property wins() As String
End Class

Public Class ServerData
    Public Property data() As ServerAttributes
End Class

Module StaterMainClass
    Public Sub GetInfo()
        Dim jss As New JavaScriptSerializer()
        Dim DataResponse As ServerData = jss.Deserialize(Of ServerData)(JSON)

        Debug.Print(DataResponse.data.assists(0))
   End Sub

End Module
  

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

1. Посмотрите на Json.NET

2. Десериализатор понятия не имеет о том, что вы хотите, чтобы он вернул, используя только раздел содержимого без каких-либо других ссылок. Этот JSON RootObject содержит 3 подобъекта: { data, links, meta} . data Элемент содержит строку и 2 объекта: { type (string), attributes, relationships } . Вам нужно attributes содержимое. attributes содержит 1 объект { gameModeStats } , который содержит 6 объектов типа, который вы показываете здесь. Вам нужно указать, откуда вы хотите извлечь свои данные (имейте в виду, у вас есть 6 объектов одного типа).

3. Эй, Джими, ты прав. Я хотел бы иметь возможность извлекать значение из любого из атрибутов в любом из 6 различных объектов. Вот пример: ссылка Я просто не уверен, как загрузить каждый из 6 объектов и правильно ссылаться на них, чтобы иметь возможность извлекать атрибуты из любого из 6 объектов, которые мне требуются.

4. итак, я придумал это: ссылка Единственное, в чем я не уверен, так это в том, что я разбираю объекты с «-» в интервале между именами (например: duo-fpp), как избежать того, чтобы VB вызывал ошибку с «-«?

5. Первое: вам нужен весь JSON или только duo , duo-fpp и т.д. части? Если вам нужно преобразовать весь JSON в классы, ваша структура классов почти готова. Помните, что вам нужен только один объект класса для всех duo , duo-fpp и т.д. объектов, потому что они идентичны по содержанию (одинаковые свойства). Вы можете использовать JsonProperty атрибут для преобразования имен свойств. Например., <JsonProperty("squad-fpp")> Public Property SquadFpp As [Some class]