Überschreiben Sie das Serialisierungsverhalten von JsonProperty-Eigenschaften in JSON.Net
Beim Serialisieren von JSON mit Json.Net in ASP.Net MVC können Sie das Attribut [JsonProperty]
verwenden, um den Eigenschaftsnamen anzupassen. In einigen Fällen möchten Sie diese Eigenschaft jedoch möglicherweise ignorieren und den ursprünglichen Eigenschaftsnamen für die Serialisierung verwenden.
Zu diesem Zweck kann ein benutzerdefinierter Vertragsparser verwendet werden. Der Vertragsparser bestimmt, wie JSON.Net Objekte in JSON serialisiert. So erstellen Sie einen Vertragsparser, der das [JsonProperty]
-Attribut ignoriert:
<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>
Um den Vertragslöser zu verwenden, instanziieren Sie ihn und übergeben Sie ihn an JsonSerializerSettings
:
<code class="language-csharp">JsonSerializerSettings settings = new JsonSerializerSettings(); settings.Formatting = Formatting.Indented; settings.ContractResolver = new LongNameContractResolver();</code>
Übergeben Sie abschließend diese Einstellungen an JsonConvert.SerializeObject
, um das Objekt zu serialisieren:
<code class="language-csharp">string json = JsonConvert.SerializeObject(obj, settings);</code>
Dieser benutzerdefinierte Vertragsparser ignoriert effektiv das [JsonProperty]
-Attribut und serialisiert das Attribut unter Verwendung seines ursprünglichen Namens, selbst wenn das JsonProperty
-Attribut einen kürzeren Namen angibt.
Das obige ist der detaillierte Inhalt vonWie überschreibe ich die Attributserialisierung „JsonProperty' in JSON.Net?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!