#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]