Serializzazione / deserializzazione JSON in ASP.Net Core


131

Poiché non esiste JavaScriptSerializer, quale implementazione nativa può essere utilizzata per gestire questo?

Ho notato JsonResulte posso formattare i dati su JSON con questo, ma come deserializzo?

O forse mi sto perdendo alcune dipendenze project.json?

Risposte:


235

Puoi usare Newtonsoft.Json, è una dipendenza di Microsoft.AspNet.Mvc.ModelBindingcui è una dipendenza Microsoft.AspNet.Mvc. Quindi, non è necessario aggiungere una dipendenza in project.json.

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

Nota, utilizzando un controller WebAPI non è necessario gestire JSON.

AGGIORNA ASP.Net Core 3.0

Json.NET è stato rimosso dal framework condiviso ASP.NET Core 3.0.

È possibile utilizzare i nuovi layer serializzatore JSON oltre a quelli ad alte prestazioni Utf8JsonReadere Utf8JsonWriter. Deserializza gli oggetti da JSON e serializza gli oggetti su JSON. Le allocazioni di memoria sono ridotte al minimo e include il supporto per la lettura e la scrittura di JSON con Stream in modo asincrono.

Per iniziare, usa la JsonSerializerclasse nello System.Text.Json.Serializationspazio dei nomi. Vedere la documentazione per informazioni e campioni.

Per utilizzare Json.NET in un progetto ASP.NET Core 3.0:

    services.AddMvc()
        .AddNewtonsoftJson();

Leggi il supporto di Json.NET in Migrate da ASP.NET Core 2.2 alla 3.0 Anteprima 2 per maggiori informazioni.


Ora AspNetCore.Mcv non ha dipendenze da Newtonsoft.JSON. Assembly Microsoft.AspNet.Mvc.Formatters.Json utilizzato per la serializzazione.
Roman Pokrovskij,

9
@RomanPokrovskij, sbagliato,: Microsoft.AspNetCore.Mvc.Formatters.Jsonha una dipendenza dalla Microsoft.AspNetCore.JsonPatchquale ha una dipendenza da Newtonsoft.Json9.0.1 nuget.org/packages/Microsoft.AspNetCore.Mvc.Formatters.Json , nuget.org/packages/Microsoft.AspNetCore.JsonPatch
agua da mars

È inoltre possibile utilizzare JsonConvert.DeserializeObject <YourClass> (json) per deserializzare a una classe specifica.
Nuno Ribeiro,

14

.net core

using System.Text.Json;

Per serializzare

var jsonStr = JsonSerializer.Serialize(MyObject)

Deserialize

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

Per ulteriori informazioni sull'esclusione di proprietà e null, consulta Questo lato Microsoft


sai come deserializzare json in un tipo dinamico?
zolty13
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.