Десериализация некоторых JSON с JSON.NET - PullRequest
3 голосов
/ 19 сентября 2009

Я очень плохо знаком с JSON, и мне нужно проанализировать некоторые из них, предоставляемые API. Быстрый поиск в Google оказался JSON.NET , поэтому я пытаюсь использовать его сейчас, чтобы проанализировать этот JSON в объект списка. Прежде всего, - JSON.NET - лучшая библиотека для использования для этого?

Вот что я пытаюсь сделать: у меня есть класс с именем Item , например. У json есть много «элементов» (если так они называются), и каждый содержит 3 поля : целое число с именем id, строка с именем name и дата-время с именем creationTime. Я хотел бы разобрать все эти элементы Item из json в список объектов Item . Я создал 3 поля в классе Item, чтобы соответствовать JSON. Как это можно сделать с помощью JSON.NET?

Я пробовал:

List<Item> fav = (List<Item>)new JsonSerializer().Deserialize(new JsonReader((TextReader)new StreamReader(response.GetResponseStream())));

но это не похоже на работу. Я получаю ошибку приведения - он просто не может обработать его в приложении списка, но я даже не уверен, сможет ли он обработать JSON в один класс Item (JSON.NET не очень хорошо документирован, но я я собираюсь отлаживать это завтра).

Можете ли вы дать мне пример кода, чтобы объяснить, как я могу разобрать его с JSON.NET?

Спасибо!

ОБНОВЛЕНИЕ: Кстати, забыл упомянуть - мой проект будет ориентирован на .NET Framework 2.0, поэтому я использую устаревшую версию JSON.NET: 1.3.1. Есть ли какие-то ОГРОМНЫЕ преимущества, которые могут сделать проект достойным преобразования в .NET 3.5, подрывая при этом минимальные системные требования?

ОБНОВЛЕНИЕ № 2: Я решил использовать класс JavascriptSerializer в System.Web.Extensions.dll вместо JSON.NET, и вопрос об этом размещен здесь . Спасибо!

Ответы [ 2 ]

1 голос
/ 26 июня 2012

Я понимаю, что этому вопросу около 3 лет, но я подумал, что просто добавлю, что если вы хотите создать Api на основе JSON, NancyFx - это здорово: http://nancyfx.org/

EDIT: Пример по запросу, действительно легко. Для начала просто добавьте пакет nancyfx asp в веб-проект через NuGet. (если вы добавляете его в существующее приложение по дополнительному пути, вам нужно добавить местоположение в файл web.config, в противном случае все готово)

using Nancy;
using Nancy.ModelBinding;

public class Api : NancyModule
        {
            public Api()
            {
                Get["/api/order/create"] = x => 
                { 
                    var order = this.Bind<Order>(); //xml/json negotiated based on content header

                    var result = ... // Do stuff here

                    return Response.AsJson(result); 
                };
            }       
        }
0 голосов
/ 21 сентября 2009

Я бы порекомендовал вам обновить до .net Framework 3.5 и использовать ASP.Net MVC для создания ваших json-сервисов. См:

http://msmvps.com/blogs/omar/archive/2008/10/03/create-rest-api-using-asp-net-mvc-that-speaks-both-json-and-plain-xml.aspx

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