Я довольно плохо знаком с форматом YAML и VB.net в целом (работал с VB6 в течение ~ 5 лет на работе и после миграции, этот проект является небольшим обучающим упражнением). Я также использую пакет yamldotnet.
В данный момент я изменяю некоторый код, который был опубликован для анализа файла .yaml
из Eve Online SDE, поскольку SDE добавил новые поля в файл yaml. В идеале я хотел бы использовать этот файл для выполнения вызовов API, чтобы получить статическую информацию из файлов SDE.
Я застреваю, добавляя свойства к «временному» классу для поля «masteries». Я отредактировал en / de / fr / etc. описания для удобства чтения.
582:
capacity: 270.0
description:
de: info
en: info
fr: info
ja: info
ru: info
zh: info
factionID: 500001
graphicID: 38
groupID: 25
marketGroupID: 61
mass: 1480000.0
masteries:
0:
- 96
- 139
- 85
- 87
- 94
1:
- 96
- 139
- 85
- 87
- 94
2:
- 96
- 139
- 85
- 87
- 94
3:
- 96
- 139
- 85
- 87
- 94
4:
- 96
- 139
- 85
- 118
- 87
- 94
name:
de: Bantam
en: Bantam
fr: Bantam
ja: バンタム
ru: Bantam
zh: 矮脚鸡级
portionSize: 1
published: true
raceID: 1
radius: 27.0
sofFactionName: caldaribase
soundID: 20070
traits:
roleBonuses:
- bonus: 300
bonusText:
de: info
en: info
fr: info
ja: info
ru: info
zh: info
importance: 1
unitID: 105
types:
3330:
- bonus: 10
bonusText:
de: info
en: info
fr: info
ja: info
ru: info
zh: info
importance: 1
unitID: 105
- bonus: 10
bonusText:
de: info
en: info
fr: info
ja: info
ru: info
zh: info
importance: 2
unitID: 105
volume: 20000.0
И у меня есть класс, поскольку я добавляю свойства как
Class YAMLtempItem
Public Property basePrice As Decimal?
Public Property description As Dictionary(Of String, String)
Public Property groupID As Integer
Public Property iconID As Integer?
Public Property marketGroupID As Integer?
Public Property mass As String
Public Property name As Dictionary(Of String, String)
Public Property portionSize As Integer
Public Property published As Boolean
Public Property volume As Decimal?
Public Property radius As Double?
Public Property graphicID As Integer?
Public Property soundID As Integer?
Public Property raceID As Integer?
Public Property sofFactionName As String
Public Property capacity As String
Public Property factionID As Integer?
Public Property masteries As Dictionary(Of List(Of Integer), Integer)
End Class
и код, вызывающий синтаксический анализ, выглядит следующим образом. На данный момент он просто нажимает кнопку, чтобы запустить процесс синтаксического анализа, поскольку в итоге это будет модуль для добавления в более крупное приложение.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'Dim input = New StringReader("C:\....\typeIDs.yaml")
Dim input = System.IO.File.ReadAllText("C:\Users\ahooks\Dropbox\Eve VB.net Projects\EVE Resources\Static Data YAML\typeIDs.yaml")
TextBox3.Text = ""
Dim deserializer = New Deserializer()
Dim strtemp = New StringReader(input)
Dim itemTypes = deserializer.Deserialize(Of Dictionary(Of Integer, YAMLtempItem))(strtemp)
End Sub
Я пробовал разные комбинации для свойства 'masteries', но безрезультатно. Я также попытался найти что-то похожее на JSONUtils, которое сгенерирует класс из некоторых данных, но этого тоже не хватало. Кто-нибудь может указать мне правильное направление для получения этого вложенного списка?