Remplacer le comportement de sérialisation des propriétés JsonProperty dans JSON.Net
Lors de la sérialisation de JSON à l'aide de Json.Net dans ASP.Net MVC, vous pouvez utiliser l'attribut [JsonProperty]
pour personnaliser le nom de la propriété. Toutefois, dans certains cas, vous souhaiterez peut-être ignorer cette propriété et utiliser le nom de propriété d'origine pour la sérialisation.
À cette fin, un analyseur de contrat personnalisé peut être utilisé. L'analyseur de contrat détermine comment JSON.Net sérialise les objets en JSON. Voici comment créer un analyseur de contrat qui ignore l'attribut [JsonProperty]
:
<code class="language-csharp">class LongNameContractResolver : DefaultContractResolver { protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization) { // 基类创建具有简短名称的属性 IList<JsonProperty> list = base.CreateProperties(type, memberSerialization); // 使用原始名称覆盖属性名称 foreach (JsonProperty prop in list) { prop.PropertyName = prop.UnderlyingName; } return list; } }</code>
Pour utiliser le résolveur de contrat, instanciez-le et transmettez-le à JsonSerializerSettings
:
<code class="language-csharp">JsonSerializerSettings settings = new JsonSerializerSettings(); settings.Formatting = Formatting.Indented; settings.ContractResolver = new LongNameContractResolver();</code>
Enfin, transmettez ces paramètres à JsonConvert.SerializeObject
pour sérialiser l'objet :
<code class="language-csharp">string json = JsonConvert.SerializeObject(obj, settings);</code>
Cet analyseur de contrat personnalisé ignorera effectivement l'attribut [JsonProperty]
et sérialisera l'attribut en utilisant son nom d'origine, même si l'attribut JsonProperty
spécifie un nom plus court.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!