Десериализация JSON и преобразование их в объекты C # - PullRequest
1 голос
/ 02 февраля 2011

У меня есть веб-приложение silverlight. Из этого приложения я звоню на страницы JSP, используя класс WebClient. Теперь JSP возвращает ответ в формате JSON

{
 "results":[{"Value":"1","Name":"Advertising"},
 {"Value":"2","Name":"Automotive Expenses"},{"Value":"3","Name":"Business Miscellaneous"}]
}

Приведенный выше ответ назначен моему объекту Stream.

У меня есть класс c # CategoryType

public class CategoryType
{
 public string Value{get;set;}
 public string Name{get;set;}
}

Моя цель - преобразовать ответы в Collection<CategoryType> и использовать их в моем коде C #

На данный момент я пытаюсь использовать DataContractJSONSerialiser. Но не уверен, есть ли простой и эффективный способ сделать это. Любая помощь будет оценена

1 Ответ

2 голосов
/ 02 февраля 2011

Это JSON и для преобразования его в объект вам нужно десериализовать его в объект. многие инструменты доступны от Microsoft и третьих лиц.

И вы, кажется, идете правильным путем.

Я использовал JavascriptSerializer. Смотрите его использование здесь http://shekhar -pro.blogspot.com / 2011/01 / serializing-and-deserializing-data-from.html

или используйте замечательную библиотеку JSON.Net широко использовался даже до того, как Microsoft выпустила эти библиотеки.

Обновление

Как вы упомянули в своих комментариях, вы хотите преобразовать его в коллекцию, вы можете сделать это так:

создать класс массива для представления массива элементов.

public class CategoryTypeColl
{
     public CategoryType[] results {get;set;}
}

и в вашем коде

Collection<CategoryType> ctcoll = new Collection<CategoryType>();
JavaScriptSerializer jsr = new  JavaScriptSerializer();
CategoryTpeColl ctl = jsr.Deserialize<CategoryTypeColl>(/*your JSON String*/);
List<CategoryType> collection = (from item in ctl.results
                                select item).ToList();
//If you have implemented Icollection then you can use yourcollection and Add items in a foreach loop.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...