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?

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.


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


savez-vous comment désérialiser json en type dynamique?
zolty13
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.