Sérialisation / désérialisation JSON dans ASP.Net Core

131

Puisqu'il n'y en a pas JavaScriptSerializer, quelle implémentation native peut être utilisée pour gérer cela?

J'ai remarqué JsonResultet je peux formater les données en JSON avec cela, mais comment désérialiser?

Ou peut-être que je manque des dépendances project.json?

Jakub Wisniewski
la source

Réponses:

235

Vous pouvez utiliser Newtonsoft.Json, c'est une dépendance Microsoft.AspNet.Mvc.ModelBindingdont est une dépendance de Microsoft.AspNet.Mvc. Ainsi, vous n'avez pas besoin d'ajouter une dépendance dans votre project.json.

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

Notez qu'en utilisant un contrôleur WebAPI, vous n'avez pas besoin de gérer JSON.

MISE À JOUR ASP.Net Core 3.0

Json.NET a été supprimé de l' infrastructure partagée ASP.NET Core 3.0.

Vous pouvez utiliser les nouvelles couches de sérialiseur JSON en plus des fichiers à hautes performances Utf8JsonReaderet Utf8JsonWriter. Il désérialise les objets de JSON et sérialise les objets vers JSON. Les allocations de mémoire sont minimales et incluent la prise en charge de la lecture et de l'écriture de JSON avec Stream de manière asynchrone.

Pour commencer, utilisez la JsonSerializerclasse dans l' System.Text.Json.Serializationespace de noms. Consultez la documentation pour obtenir des informations et des exemples.

Pour utiliser Json.NET dans un projet ASP.NET Core 3.0:

    services.AddMvc()
        .AddNewtonsoftJson();

Lisez la prise en charge de Json.NET dans Migrate from ASP.NET Core 2.2 to 3.0 Preview 2 pour plus d'informations.

agua de mars
la source
Désormais, AspNetCore.Mcv n'a plus de dépendances sur Newtonsoft.JSON. Assemblage Microsoft.AspNet.Mvc.Formatters.Json utilisé pour la sérialisation.
Roman Pokrovskij
9
@RomanPokrovskij, faux,: Microsoft.AspNetCore.Mvc.Formatters.Jsona une dépendance à Microsoft.AspNetCore.JsonPatchlaquelle a une dépendance à Newtonsoft.Json9.0.1 nuget.org/packages/Microsoft.AspNetCore.Mvc.Formatters.Json , nuget.org/packages/Microsoft.AspNetCore.JsonPatch
agua de mars
Vous pouvez également utiliser JsonConvert.DeserializeObject <YourClass> (json) pour désérialiser vers une classe spécifique.
Nuno Ribeiro
14

noyau .net

using System.Text.Json;

Pour sérialiser

var jsonStr = JsonSerializer.Serialize(MyObject)

Désérialiser

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

Pour plus d'informations sur l'exclusion des propriétés et des valeurs nulles, consultez Ce côté Microsoft

NoloMokgosi
la source
savez-vous comment désérialiser json en type dynamique?
zolty13