Serialização / desserialização JSON no ASP.Net Core

131

Como não há JavaScriptSerializer , qual implementação nativa pode ser usada para lidar com isso?

Percebi JsonResult e posso formatar dados para JSON com isso, mas como desserializar?

Ou talvez eu esteja perdendo algumas dependências project.json?

Jakub Wisniewski
fonte

Respostas:

235

Você pode usar Newtonsoft.Json, é uma dependência da Microsoft.AspNet.Mvc.ModelBindingqual é uma dependência Microsoft.AspNet.Mvc. Portanto, você não precisa adicionar uma dependência no seu project.json.

#using Newtonsoft.Json
....
JsonConvert.DeserializeObject(json);

Observe que, usando um controlador WebAPI, você não precisa lidar com o JSON.

ATUALIZAÇÃO ASP.Net Core 3.0

O Json.NET foi removido da estrutura compartilhada do ASP.NET Core 3.0.

Você pode usar as novas camadas do serializador JSON em cima do alto desempenho Utf8JsonReadere Utf8JsonWriter. Deserializa objetos de JSON e serializa objetos para JSON. As alocações de memória são mínimas e incluem suporte para leitura e gravação de JSON com Stream de forma assíncrona.

Para começar, use a JsonSerializerclasse no System.Text.Json.Serializationespaço para nome. Consulte a documentação para obter informações e amostras.

Para usar o Json.NET em um projeto do ASP.NET Core 3.0:

    services.AddMvc()
        .AddNewtonsoftJson();

Leia o suporte ao Json.NET no Migrate do ASP.NET Core 2.2 para 3.0 Preview 2 para obter mais informações.

agua de marte
fonte
Agora, o AspNetCore.Mcv não tem dependências no Newtonsoft.JSON. Conjunto Microsoft.AspNet.Mvc.Formatters.Json usado para serialização.
Roman Pokrovskij
9
@RomanPokrovskij, errado:: Microsoft.AspNetCore.Mvc.Formatters.Jsontem uma dependência da Microsoft.AspNetCore.JsonPatchqual depende Newtonsoft.Json9.0.1 nuget.org/packages/Microsoft.AspNetCore.Mvc.Formatters.Json , nuget.org/packages/Microsoft.AspNetCore.JsonPatch
agua from mars
Você também pode usar JsonConvert.DeserializeObject <YourClass> (json) para desserializar para uma classe específica.
Nuno Ribeiro
14

.net core

using System.Text.Json;

Para serializar

var jsonStr = JsonSerializer.Serialize(MyObject)

Desserializar

var weatherForecast = JsonSerializer.Deserialize<MyObject>(jsonStr);

Para obter mais informações sobre como excluir propriedades e nulos, consulte Este lado da Microsoft.

NoloMokgosi
fonte
você sabe como desserializar o json para o tipo dinâmico?
zolty13