Deserializing alguns JSON com JSON.NET
-
11-09-2019 - |
Pergunta
Eu sou muito novo para JSON, e eu preciso analisar alguns que uma API está fornecendo. Uma rápida pesquisa no google apareceu JSON.NET , então eu estou tentando usá-lo agora para analisar esta JSON em um objeto lista. Primeiro de tudo, é JSON.NET a melhor biblioteca para uso para isso?
Este é o que estou tentando fazer: Eu tenho um classe chamada item , por exemplo. O JSON tem muitos "elementos" (se é isso que eles são chamados), e cada contém 3 campos : um ID de inteiro chamado, um nome de cadeia nomeado, e uma data e hora chamado creationTime. Eu gostaria de analisar todos esses "elementos" item do JSON em uma lista de objetos Item . Eu criei 3 campos na classe item para coincidir com o JSON. Como isso pode ser feito usando JSON.NET?
Eu tentei:
List<Item> fav = (List<Item>)new JsonSerializer().Deserialize(new JsonReader((TextReader)new StreamReader(response.GetResponseStream())));
mas não parece trabalho. Recebo um erro de casting - ele só não pode processá-lo em uma caixa lista, mas eu nem tenho certeza se é capaz de processar o JSON em uma classe Item (JSON.NET não é muito bem documentado, mas eu' m indo para depurá-lo amanhã) pesadamente.
Você pode me dar algum código de exemplo para explicar como eu posso analisá-lo com JSON.NET?
Obrigado!
UPDATE: A propósito, esqueci de mencionar - meu projeto vai ser alvo .NET Framework 2.0, por isso estou usando a versão legado de JSON.NET: 1.3.1. Há alguma vantagem grande que pode fazer o valor do projeto a conversão para .NET 3.5, enquanto minando os requisitos do sistema mínimo?
update # 2: eu decidi usar a classe JavaScriptSerializer em System.Web.Extensions.dll vez de JSON.NET, e uma pergunta sobre o que é publicado here . Obrigado!
Solução
Eu recomendo que você atualize para .NET Framework 3.5 e usar ASP.Net MVC para construir seus serviços JSON. Veja:
Outras dicas
Eu percebo esta pergunta é de cerca de 3 anos de idade, mas eu pensei que eu iria apenas acrescentar que, se você quiser construir uma API JSON base, NancyFx é incrível: http://nancyfx.org/
EDIT: Um exemplo, conforme solicitado, muito fácil. Para começar basta adicionar o pacote asp nancyfx a um projeto web via NuGet. (Se você está adicionando-lo para uma aplicação existente em um sub caminho, você vai precisar adicionar uma localização para o web.config, caso contrário, você está pronto para ir)
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);
};
}
}