2016-06-16 3 views
2

Unten ist ein Auszug aus einer JSON-Antwort von einem Dienst erhalten.Dynamische JsonProperty

aggregations: { 
    gender: { 
      ...other data 
    } 
} 

Der Dienst wird immer die gleiche Struktur, aber mit verschiedenen Aggregationstyp basierend auf einigen Parametern zurückgeben. Der Begriff "Geschlecht" kann also "Alter" oder "Stadt" oder irgendetwas anderes sein. Ich suche nach einer Möglichkeit, ein .Net-Objekt zu erstellen, ist möglich, mit einem dynamischen Eigenschaftsnamen, so dass ich kein separates Objekt für jede Aggregation haben muss. etwas wie das:

public class Aggregation { 
    [JsonProperty(PropertyName = "<dynamic value based on json response>")] 
    public List<string> AggregationValues { get; set; } 
} 

Gibt es einen anderen Weg, dies zu erreichen? Danke für Ihre Hilfe.

+1

Werfen Sie einen Blick auf diese Antwort http://stackoverflow.com/questions/26882986/overwrite-json-property-name-in-c-sharp – smoksnes

+0

Ich habe dies mit benutzerdefinierten ContractResolver getan, wie @smoksnes schlägt und es funktionierte schön Gut. Gleichzeitig würde ich versuchen, es als Dictionary zu deserialisieren, denn das ist es im Wesentlichen. –

Antwort

0

Zum Erstellen dynamischer Eigenschaften in C# siehe this. Dieser Artikel definiert, was wir von einer dynamischen Eigenschaft benötigen.

+0

@ user3731783 bitte upvote und akzeptiere diese Antwort, wenn diese Antwort dir hilft, damit die Leute wissen, dass dies die richtige Antwort ist. –