Heim > Backend-Entwicklung > C++ > Wie überschreibe ich die Attributserialisierung „JsonProperty' in JSON.Net?

Wie überschreibe ich die Attributserialisierung „JsonProperty' in JSON.Net?

DDD
Freigeben: 2025-01-07 15:57:44
Original
231 Leute haben es durchsucht

How to Override `JsonProperty` Attribute Serialization in JSON.Net?

Ü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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Ü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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage