Serialización / deserialización JSON en ASP.Net Core

131

Como no existe JavaScriptSerializer, ¿qué implementación nativa se puede usar para manejar esto?

Me di cuenta JsonResulty puedo formatear datos a JSON con esto, pero ¿cómo deserializo?

¿O tal vez me faltan algunas dependencias project.json?

Jakub Wisniewski
fuente

Respuestas:

235

Puede usar Newtonsoft.Json, es una dependencia de la Microsoft.AspNet.Mvc.ModelBindingcual es una dependencia de Microsoft.AspNet.Mvc. Por lo tanto, no necesita agregar una dependencia en su project.json.

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

Tenga en cuenta que con un controlador WebAPI no necesita tratar con JSON.

ACTUALIZAR ASP.Net Core 3.0

Json.NET se ha eliminado del marco compartido ASP.NET Core 3.0.

Puede usar las nuevas capas de serializador JSON además del alto rendimiento Utf8JsonReadery Utf8JsonWriter. Deserializa objetos de JSON y serializa objetos a JSON. Las asignaciones de memoria se mantienen mínimas e incluyen soporte para leer y escribir JSON con Stream de forma asincrónica.

Para comenzar, use la JsonSerializerclase en el System.Text.Json.Serializationespacio de nombres. Consulte la documentación para obtener información y muestras.

Para usar Json.NET en un proyecto ASP.NET Core 3.0:

    services.AddMvc()
        .AddNewtonsoftJson();

Lea el soporte de Json.NET en Migrate from ASP.NET Core 2.2 to 3.0 Preview 2 para obtener más información.

agua de marte
fuente
Ahora AspNetCore.Mcv no tiene dependencias en Newtonsoft.JSON. Microsoft.AspNet.Mvc.Formatters.Json ensamblado utilizado para la serialización.
Roman Pokrovskij
9
@RomanPokrovskij, incorrecto: Microsoft.AspNetCore.Mvc.Formatters.Jsontiene una dependencia Microsoft.AspNetCore.JsonPatchque depende de Newtonsoft.Json9.0.1 nuget.org/packages/Microsoft.AspNetCore.Mvc.Formatters.Json , nuget.org/packages/Microsoft.AspNetCore.JsonPatch
agua from mars
También puede usar JsonConvert.DeserializeObject <YourClass> (json) para deserializar a una clase específica.
Nuno Ribeiro
14

núcleo .net

using System.Text.Json;

Para serializar

var jsonStr = JsonSerializer.Serialize(MyObject)

Deserializar

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

Para obtener más información sobre la exclusión de propiedades y valores nulos, consulte Este lado de Microsoft

NoloMokgosi
fuente
¿sabes cómo deserializar json a tipo dinámico?
zolty13