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?

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.


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


¿sabes cómo deserializar json a tipo dinámico?
zolty13
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.