// get the json element value of a propertyif (jsonDocument.RootElement.TryGetProperty(propertyName, outJsonElementjsonElement)) { }
// get the stringvalue of a JsonDocumentstringstringJsonDocument = jsonDocument.RootElement.GetRawText();
// create a JsonDocument from a json stringJsonDocumentjsonDocument = JsonDocument.Parse(stringJsonDocument);
// create an updated JsonDocument by updating the value of a propertystringstringJsonDocument = jsonDocument.RootElement.GetRawText();
JsonObject? jsonObjectDocument = JsonNode.Parse(stringJsonDocument)?.AsObject();
varserializedValue = JsonSerializer.Serialize(value, jsonSerializerOptions);
JsonNode? jsonNodeSerializedValue = JsonNode.Parse(serializedValue);
jsonObjectDocument[propertyName] = jsonNodeSerializedValue;
stringupdatedStringJsonDocument = jsonObjectDocument.ToJsonString();
JsonDocumentupdatedJsonDocument = JsonDocument.Parse(updatedStringJsonDocument);
using Newtonsoft.Json;
// lecture du fichiervarjsonContent = File.ReadAllText("/chemin/vers/le/fichier.json");
// DésérialiserMaClassemonObjet = JsonConvert.DeserializeObject<MaClasse>(text);
// sérialiser avec pretty printvarjson = JsonConvert.SerializeObject(monObjet, Formatting.Indented);
classMaClasse
{
// Forcer cette propriété en deuxième position
[JsonProperty(Order = 2)]
publicstring P1 { get; set; }
// Forcer cette propriété en première position
[JsonProperty(Order = 1)]
publicstring P2 { get; set; }
// Ne pas sérialiser cette propriété
[JsonIgnore]
publicstring P3 { get; set; }
// Ne pas sérialiser cette propriété si sa valeur est nulle
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
publicstring P31 { get; set; }
publicIList<string> P32 { get; privateset; } = newList<string>();
// Ne pas sérialiser cette propriété si la liste est videpublicboolShouldSerializeP32()
{
return P32.Count > 0;
}
// mapping de la propriété avec odata.p4 en sérialisation et désérialisation
[JsonProperty(PropertyName = "odata.p4")]
publicstring P4 { get; set; }
L'ordre par défaut est de -1
JsonSerializerSettings
// Affiche les types .NET dans le json générévarjsonSerializerSettings = newJsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All };
JsonConvert.SerializeObject(data, Formatting.Indented, jsonSerializerSettings);
On souhaite désérialiser dans une classe abstraite, mais le mécanisme de désérialisation ne peut créer cette classe abstraite.
Il faut donc surcharger la méthode ReadJson du JsonConverter pour lui permettre de choisir quelle classe concrète doit être utilisée.
// écriture des items dans jsonFilePath
File.WriteAllText(jsonFilePath, JsonConvert.SerializeObject(items, Formatting.Indented));
// lecture de jsonFilePath dans itemsusing (StreamReaderfile = File.OpenText(jsonFilePath))
{
var serializer = newJsonSerializer();
items = (List<Item>)serializer.Deserialize(file, typeof(List<Item>));
}
ASP.NET Core Web API integration
Program.cs
builder.Services
.AddControllers()
.AddNewtonsoftJson(x => x.SerializerSettings.Converters.Add(newStringEnumConverter())); // handle enums
builder.Services.AddSwaggerGenNewtonsoftSupport(); // dislay the enum value as string instead of int (assembly Swashbuckle.AspNetCore.Newtonsoft)