В настоящее время я разрабатываю выигрышную форму vb.net, в которой используется URL-адрес для возврата файла json, который мне нужно поместить в таблицу данных.Я не уверен, как сделать мою публичную иерархию классов, не делая тысячи строк.Прямо сейчас я пытаюсь перенести всю информацию в текстовое поле, но в конечном итоге помещаю их в таблицу данных для размещения в сетке данных.Вот небольшая часть файла json и URL для загрузки текстовой строки json.
URL: https://api.worldoftanks.com/wot/encyclopedia/vehicles/?application_id=c2b5cb8d6c77098c8a9a481e68476b28&fields=name%2C+tank_id%2C+tier
Небольшой образец файла json:
{
"status": "ok",
"meta": {
"count": 632,
"page_total": 7,
"total": 632,
"limit": 100,
"page": null
},
"data": {
"1": {
"tier": 5,
"name": "T-34",
"tank_id": 1
},
"33": {
"tier": 5,
"name": "T14",
"tank_id": 33
},
"49": {
"tier": 8,
"name": "Type 59",
"tank_id": 49
},
"81": {
"tier": 1,
"name": "Vickers Medium Mk. I",
"tank_id": 81
},
"113": {
"tier": 1,
"name": "Kolohousenka",
"tank_id": 113
},
"129": {
"tier": 1,
"name": "Strv fm/21",
"tank_id": 129
},
"145": {
"tier": 6,
"name": "Pudel",
"tank_id": 145
},
"161": {
"tier": 1,
"name": "Fiat 3000",
"tank_id": 161
},
"257": {
"tier": 5,
"name": "SU-85",
"tank_id": 257
},
"273": {
"tier": 6,
"name": "Hummel",
"tank_id": 273
},
"289": {
"tier": 3,
"name": "M3 Stuart",
"tank_id": 289
},
"305": {
"tier": 7,
"name": "Type 62",
"tank_id": 305
},
"321": {
"tier": 3,
"name": "D2",
"tank_id": 321
}}
Проблема здесь в части «данные», я не привык иметь так много подполей, в этом случае вы видите следующие 1, 33, 49, и т. Д. Единственный способ, которым я знаю, как создать открытый классдля этого было бы сделать индивидуальный для каждого числа, и их слишком много для этого.Может ли кто-нибудь указать мне правильное направление для перечисления 3 атрибутов: уровня, имени и tank_id в таблицу данных.Кроме того, для моего другого json-кода я всегда вручную записывал информацию в таблицу данных с циклом for, что является самым худшим способом решения этой проблемы, поэтому любая помощь там также будет принята с благодарностью.
Вот мой код vb.net:
Imports System.Net
Imports System.IO
Imports System.Web.Script.Serialization
Imports Newtonsoft.Json
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim uri1string As String = "https://api.worldoftanks.com/wot/encyclopedia/vehicles/?application_id=c2b5cb8d6c77098c8a9a481e68476b28&fields=short_name%2C+tank_id%2C+tier"
Dim uri1 As New Uri(uri1string)
Dim Request1 As HttpWebRequest = HttpWebRequest.Create(uri1)
Request.Method = "GET"
Dim Response1 As HttpWebResponse = Request1.GetResponse()
Dim read1 = New StreamReader(Response1.GetResponseStream())
Dim raw1 As String = read1.ReadToEnd()
Dim jss1 As New JavaScriptSerializer
Dim root1 As RootObject1 = jss1.Deserialize(Of RootObject1)(raw1)c
'------------------Trying to get this to work---------------
For Each vehicle As Vehicles In root1.data.First().Value.short_name
TextBox1.Text += vehicle.short_name + vbNewLine
Next
End Sub
End Class
Public Class RootObject1
Public Property status As String
Public Property meta As Meta1
Public Property data As Dictionary(Of String, Vehicles)
End Class
Public Class Meta1
Public Property count As Integer
End Class
Public Class Vehicles
Public Property tier As String
Public Property short_name As String
Public Property tank_id As String
End Class
'Public Class Vdesc
' Public Property tier As String
' Public Property short_name As String
' Public Property tank_id As String
'End Class
--------------------
Я сейчас пытаюсьэто потому, что номера идентификаторов не в порядке и в номерах номеров есть пробелы, например, они могут читать 1, затем 4, а затем 12. Я получаю сообщение об ошибке.
Dim tokenjson = JsonConvert.SerializeObject(uri1)
Dim jsonresult = JsonConvert.DeserializeObject(Of Dictionary(Of String, Object))(raw1)
Dim dtLookup As New DataTable
'dtLookup.Rows.Add()
dtLookup.Columns.Add()
dtLookup.Columns.Add()
dtLookup.Columns.Add()
For i As Integer = 0 To jsonresult.Count
dtLookup.Rows.Add()
dtLookup.Rows(i).Item(0) = jsonresult("data")("" & i + 1 & "")("tier")
dtLookup.Rows(i).Item(0) = jsonresult("data")("" & i + 1 & "")("name")
dtLookup.Rows(i).Item(0) = jsonresult("data")("" & i + 1 & "")("tank_id")
Next
Спасибо,