Je convertis mon implémentation newtonsoft en une nouvelle bibliothèque JSON dans .net core 3.0. J'ai le code suivant
public static bool IsValidJson(string json)
{
try
{
JObject.Parse(json);
return true;
}
catch (Exception ex)
{
Logger.ErrorFormat("Invalid Json Received {0}", json);
Logger.Fatal(ex.Message);
return false;
}
}
Je ne trouve aucun équivalent pour JObject.Parse(json);
Quel sera également l'attribut JsonProperty
équivalent
public class ResponseJson
{
[JsonProperty(PropertyName = "status")]
public bool Status { get; set; }
[JsonProperty(PropertyName = "message")]
public string Message { get; set; }
[JsonProperty(PropertyName = "Log_id")]
public string LogId { get; set; }
[JsonProperty(PropertyName = "Log_status")]
public string LogStatus { get; set; }
public string FailureReason { get; set; }
}
Une dernière chose que je chercherai pour l'équivalent de Formating.None
.
c#
serialization
json.net
.net-core-3.0
system.text.json
Kamran Shahid
la source
la source
Réponses:
Vous posez quelques questions ici:
Je ne trouve aucun équivalent pour
JObject.Parse(json);
Vous pouvez utiliser
JsonDocument
pour analyser et examiner n'importe quel JSON, en commençant par sonRootElement
. L'élément racine est de typeJsonElement
qui représente toute valeur JSON (primitive ou non) et correspond à NewtonsoftJToken
.Mais prenez note de cette remarque de documentation :
Lorsque vous devez utiliser un
JsonElement
élément externe pendant la durée de vie de son document, vous devez le cloner :Notez également qu'il
JsonDocument
est actuellement en lecture seule et ne fournit pas d'API pour créer ou modifier JSON. Il existe un problème ouvert Problème n ° 39922: DOM Json accessible en écriture qui suit ce problème .Un exemple d'utilisation est le suivant:
Quel sera également l'attribut
JsonProperty
équivalent?Les attributs qui peuvent contrôler
JsonSerializer
sont placés dans l'System.Text.Json.Serialization
espace de noms et héritent d'une classe de base abstraiteJsonAttribute
. Contrairement àJsonProperty
, aucun attribut omnibus ne peut contrôler tous les aspects de la sérialisation des propriétés. Au lieu de cela, il existe des attributs spécifiques pour contrôler des aspects spécifiques.À partir de .NET Core 3, ils incluent:
[JsonPropertyNameAttribute(string)]
:C'est l'attribut que vous souhaitez utiliser pour contrôler les noms sérialisés de votre
ResponseJson
classe:[JsonConverterAttribute(Type)]
:Notez que la priorité documentée des convertisseurs - Attribut sur la propriété, puis la collection Convertisseurs dans les options, puis l'attribut sur le type - diffère de l'ordre documenté pour les convertisseurs Newtonsoft , qui est le JsonConverter défini par attribut sur un membre, puis le JsonConverter défini par un attribut sur une classe, et enfin tous les convertisseurs passés au JsonSerializer.
[JsonExtensionDataAttribute]
- correspond à Newtonsoft[JsonExtensionData]
.[JsonIgnoreAttribute]
- correspond à Newtonsoft[JsonIgnore]
.Lors de l'écriture de JSON via
Utf8JsonWriter
, l'indentation peut être contrôlée en définissantJsonWriterOptions.Indented
surtrue
oufalse
.Lors de la sérialisation vers JSON via
JsonSerializer.Serialize
, l'indentation peut être contrôlée en définissantJsonSerializerOptions.WriteIndented
surtrue
oufalse
.Démonstration de violon ici montrant la sérialisation
JsonSerializer
et l'analyse avecJsonDocument
.la source
Ce lien devrait vous aider à démarrer, extraits que j'ai copiés ci-dessous.
https://devblogs.microsoft.com/dotnet/try-the-new-system-text-json-apis/
la source
Vous pouvez même installer votre autre package
puis
la source