Überschreiben Json name der Eigenschaft in c#

Habe ich eine Klasse mit folgenden Feldern. Diese Eigenschaften werden serialisiert als json-Objekt aus, wenn es benötigt zum Aufruf eines externen rest-API-Methode.

public class Customer
    {
        [JsonProperty(PropertyName = "email")]
        public string Email { get; set; }

        [JsonProperty(PropertyName = "prop[listId]")]
        public string Test{ get; set; }

        //there are lot of properties 
    }

In der Eigenschaft name Test externe API-service-Aufruf erforderlich, einige Sache wie die folgende json eingereicht Namen format.

prop[7]

In meinem Fall 7 können geändert werden, entsprechend der Umgebung, wie test,dev und prod.Also, was ich bin auf der Suche nach einem Weg zu bewegen, dass listId Wert in app.config .

Ich habe versucht, es zu tun als zu Folgen, aber es ist nicht erlaubt das zu tun.für die listIdValue zuweisen, wenn der Konstante Wert wird es funktionieren.

     private string listIdValue = ConfigurationManager.AppSettings["ListIdValue"];

     [JsonProperty(PropertyName = "prop["+listIdValue +"]")]
     public string Test{ get; set; }
  • Warum? warum sind diese json-Eigenschaften benötigt?
  • Sie haben viele Eigenschaften? Könnten Sie serialisieren möchten "manuell", nur die Einstellung der Eigenschaften eines JObject?
  • Wenn die Serialisierung Bibliothek (Json.Net?) verwendet TypeDescriptor.GetAttributes für Reflexion, es sollte möglich sein, fügen Sie diese zur Laufzeit. Welche Bibliothek verwendest du?
  • Ich habe geändert, die Frage zu add-in details.
  • Vor der de-serialising JSON, finden und ersetzen Sie die JSON-text, der verwendet jede Art von debugging-name der Eigenschaft. OnBeforeDeserialisation += (s, t) => t.Replace("prop[x]", "prop[y]")
  • Können Sie einige Beispiel-code, wenn möglich 🙂

InformationsquelleAutor Thilina H | 2014-11-12
Schreibe einen Kommentar