2016-06-20 2 views
0

У меня есть результат JSON, который я пытаюсь преобразовать в массив, используя Newtonsoft.Json. Мой результат JSON я получаю от веб-сайта по линиям (отформатированный для удобства чтения):VB.NET - конвертировать данные JSON в массив

{ 
"headers": 
    [ 
     "Shift Date", 
     "Shift Number" 
    ], 
"values": 
    [ 
     ["2016-06-19T00:00:00",0], 
     ["2016-06-19T00:00:00",2], 
     ["2016-06-19T00:00:00",1] 
    ] 
} 

примеры кода, которые я нашел сказать, что я должен быть в состоянии использовать

Dim arr As JArray = JArray.Parse(response.Content) 

Это приводит к ошибка, хотя с:

An unhandled exception of type 'Newtonsoft.Json.JsonReaderException' occurred in Newtonsoft.Json.dll 

Additional information: Error reading JArray from JsonReader. Current JsonReader item is not an array: StartObject. Path '', line 1, position 1. 

Любые указания относительно того, что может быть причиной проблемы? Я подозреваю, что это что-то с «заголовки», но не смог найти в Интернете какие-либо предложения о том, как разрешить

ответ

0

Вы используете JArray но ваш вклад фактически объект - то есть данные

{..stuff..}

а не

[ {..stuff..} ].

Если вы реструктурировать свой вклад, чтобы быть:

[{ 
    "headers": [ 
     "Shift Date", 
     "Shift Number" 
    ], 
    "values": [ 
     ["2016-06-19T00:00:00", 0], 
     ["2016-06-19T00:00:00", 2], 
     ["2016-06-19T00:00:00", 1] 
    ] 
}] 

Вы можете затем использовать метод JArray.Parse(strJson).

В текущей структуре, вы должны использовать JObject.Parse.

+0

Спасибо. У меня нет большого контроля над тем, как выглядят данные (поступает с внешнего веб-сайта). Если я просто добавляю квадратные скобки, мой массив имеет 2 столбца и одну строку. Каким образом можно было бы обработать это в виде данных, чтобы я мог работать с данными? Если я использую JObject, он дает массив или один элемент (извиняется, что это все для меня новичок) –

+0

@StephenPefanis - Я думаю, что метод преобразования Json в datatable представляет собой новый вопрос! Не стесняйтесь принять мой ответ, если вы чувствуете, что это вам помогло. –

+0

Не беспокойтесь. Спасибо, Робин. Примите, как он решил начальный запрос. –

Смежные вопросы