Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Разбор JSON с помощью JavaScriptSerializer


Автор: TIT 28.2.2011, 23:32
Есть неработающий код:
Код

string responseFromServer = "[{\"id\":\"1\",\"short_name\":\"foo\"},{\"id\":\"2\",\"short_name\":\"bar\"}]";
Dictionary<string, string> dic = new JavaScriptSerializer().Deserialize<Dictionary<string, string>>(responseFromServer);


IDE ругается:
Цитата

Тип "System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]" не поддерживается для десериализации массива.


Мне нужно получить в цикле значение всех полей short_name.
Подскажите в какую сторону копать?

Microsoft Visual Studio 2010
Версия 10.0.30319.1 RTMRel
Платформа Microsoft .NET Framework
Версия 4.0.30319 RTMRel

Установленная версия: C# Express

Microsoft Visual C# 2010   01014-532-2002262-70023
Microsoft Visual C# 2010

Автор: diadiavova 28.2.2011, 23:54
http://msdn.microsoft.com/ru-ru/library/bb412187.aspx

Автор: TIT 1.3.2011, 13:37
Перечитал на сколько смог ещё раз документацию и пришёл к тому, что могу получить разобранный JSON в виде object.
Код

object obj = new JavaScriptSerializer().DeserializeObject(responseFromServer);

user posted image
Я вижу, что мой object obj правильно заполнился данными.
Но сколько бы я не пытался в цикле получить значение определённого поля, у меня никак не получается.
Запись вида:
Код

FieldInfo[] myFieldInfo = obj.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);

Не заполняет переменную FieldInfo[] myFieldInfo, чтобы потом из неё что-то получить.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)