2015-03-12 3 views
4

Я получаю этот результат от веб-функции.Как десериализовать массив JSON, содержащий только значения?

["767,20150221122715,121053103,14573465,1,7,302", 
"767,20150221122756,121053165,14573375,1,0,302", 
"767,20150221122840,121053498,14572841,1,12,124"] 

Обычно Json имеет PropertyName: Значение Но это есть массив строк, и каждая строка имеет значение, разделенное запятой. Я знаю, что означает каждая позиция значения.

Я стараюсь использовать JsonConvert.DeserializeObject, но не смог заставить его работать.

string deserializedProduct = JsonConvert.DeserializeObject<string>(json); 
//and 
List<string> deserializedProduct = JsonConvert.DeserializeObject<string>(json); 

Я могу разобрать строку, выполняющую разделение, но мне интересно, есть ли простой способ.

+1

Можете ли вы изменить свой вопрос на то, что на самом деле имеет смысл? * Это строка JSON * не имеет смысла, и она будет абсолютно неактуальна для всех, кто находит ее в результатах поиска в будущем. Название должно объяснить возникшую проблему или вопрос, который вы задаете. Благодарю. –

+1

@KenWhite: Это комментарий :) – leppie

+0

@leppie: Моя точка точно. Это, конечно, не вопрос. –

ответ

2

Чтобы ответить на ваш вопрос, согласно http://json.org/, это действительное значение JSON (массив строк).

десериализация его в соответствии с this stack overflow question вы должны использовать JsonConvert.DeserializeObject<List<string>>(json); преобразовать его

+0

Спасибо, что я работал почти там. –

+0

Ваше первое предположение заключалось в том, что результатом JSON был invaldi, который не помог вам найти ответ, я предлагаю вам перейти на людей в связанном SO-вопросе, который поможет людям в будущем. – dvhh

+0

@ dvhh Интересно, как это сделать? задний ход! – Thomas

2

универсальный параметр для метода DeserializeObject<T>() типа вы хотите десериализатор десериализовать к. Ваша строка json представляет собой массив строк, поэтому вам следует десериализовать коллекцию строк (обычно List<string>).

var values = JsonConvert.DeserializeObject<List<string>>(json); 

Однако, нет необходимости указывать тип. Существует неосновная перегрузка, которая возвращает object. Он (в этом случае) возвращает экземпляр JArray с соответствующими значениями.

object values = JsonConvert.Deserialize(json); 

Хотя, если возможно, было бы лучше вернуться к более конкретному типу. Чтобы сделать его более обобщенным, вы можете использовать JToken для общего типа или, более конкретно, JArray.

var values = JsonConvert.Deserialize<JToken>(json); // good 
var values = JsonConvert.Deserialize<JArray>(json); // better in this case 
Смежные вопросы