Десериализовать строку JSON, где нет фиксированного KEY, использующего vb - PullRequest
0 голосов
/ 15 мая 2019

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

"{" & vbCrLf & "  ""2019-08-22"": 128.75," & vbCrLf & "  ""2019-08-23"": 151.47," & vbCrLf & "  ""2019-08-24"": 151.47" & vbCrLf & "}"

Затем я пытаюсь разделить 3 значения и поместить их в базу данных, используя VB.

Пробный анализ, десериализация, но обход по кругу.

Dim uObject = Newtonsoft.Json.Linq.JObject.Parse("{" & vbCrLf & "  ""2019-08-22"": 128.75," & vbCrLf & "  ""2019-08-23"": 151.47," & vbCrLf & "  ""2019-08-24"": 151.47" & vbCrLf & "}")
DEBUG.PRINT(uObject(1, 1)) - This fails

Попытка получить следующий вывод

Key1: 2019-08-22  Value1: 128.75
Key2: 2019-08-23  Value1: 151.47
Key3: 2019-08-24  Value1: 151.47

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

С большой помощью CruelD;мой окончательный рабочий код

        Dim JSON_Obj As Newtonsoft.Json.Linq.JObject = Newtonsoft.Json.Linq.JObject.Parse("{" & vbCrLf & "  ""2019-08-22"": 128.75," & vbCrLf & "  ""2019-08-23"": 151.47," & vbCrLf & "  ""2019-08-24"": 151.47" & vbCrLf & "}")
        Dim JSON_Data As List(Of JToken) = JSON_Obj.Children().ToList
        For Each uItem As JProperty In JSON_Data
            Debug.Print(uItem.Name.ToString & " - " & uItem.Value.ToString)
        Next

Это работает удовольствие.

0 голосов
/ 15 мая 2019

Я сделал быстрый тест:

    Dim JSON_Obj As JObject = JObject.Parse("{" & vbCrLf & "  ""2019-08-22"": 128.75," & vbCrLf & "  ""2019-08-23"": 151.47," & vbCrLf & "  ""2019-08-24"": 151.47" & vbCrLf & "}")
    For Each item In JSON_Obj
        Debug.Print(String.Format("Key: {0} Value: {1}", item.key, item.value))
    Next
    '>Key: 2019-08-22 Value: 128.75
    '>Key: 2019-08-23 Value: 151.47
    '>Key: 2019-08-24 Value: 151.47

Если вы не можете получить его по имени ключа, просто получите их с индексом массива или чем-то вроде, например JSON_Obj1 = JSON_Obj.Children.ToArray () (0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...