2017-08-29 1 views
-1

Also sagen wir, ich habe ein Modell, das ich mit Daten füllen möchte, aber nicht alle Daten auf einmal.Deserializing Json in "Raten"

Das Modell ist:

public class SubPlayground 
{ 
    [JsonProperty("name")] 
    public string Name { get; set; } 

    [JsonProperty("type")] 
    public string Type { get; set; } 

    [JsonProperty("weekdays")] 
    public List<Dictionary<string, string>> Weekdays { get; set; } 
} 

//Say here we want to populate the first two properties 
var m = JsonConvert.DeserializeObject<SubPlayground>(jsonString1); 

//And here populate the third one without overriding the first two 
m = JsonConvert.DeserializeObject<SubPlayground>(jsonString2); 

Gibt es eine Abhilfe für dieses?

Edit: Zur Klarstellung: Die beiden jsonString s unterschiedlich sind, wird jeder nur die entsprechenden Eigenschaften enthalten. So dass jsonString1 wird Name und Typ enthalten, während jsonString2 wird nur Wochentage enthalten.

+0

Sie brauchen werden, um mehr Informationen über Ihre Anforderungen bieten ... Haben beide JSON-Strings alle Eigenschaften in den JSON-Daten enthalten müssen oder können Sie enthalten nur die zusätzlichen Eigenschaften, die Sie laden möchten? Sind beide JSON-Strings gleich oder unterscheiden sie sich? Wenn sie anders sind, wie? –

+0

Entschuldigung, dass ich das nicht erklärt habe. Die beiden 'jsonStrings' sind unterschiedlich, jeder enthält nur die entsprechenden Eigenschaften. So wird 'jsonString1'' name' und 'type' enthalten, während' jsonString2' nur 'wochentage' enthält. –

+0

Macht Sinn. Xiaoys Antwort würde dann gut für dich funktionieren. Können Sie Ihre Frage aktualisieren, um diese zusätzlichen Informationen aufzunehmen, damit andere die Funktionsweise der PopulateObject-Methode verstehen? Danke! –

Antwort

0

können Sie JsonConvert.PopulateObject verwenden, um ein vorhandenes Objekt zu füllen:

var jsonString1 = "{ Name: \"qwe\"}"; 
var m = JsonConvert.DeserializeObject<SubPlayground>(jsonString1); 

var jsonString2 = "{ Type: \"asd\"}"; 
JsonConvert.PopulateObject(jsonString2, m); 
+0

.. naja, das war einfach. –

+2

Beachten Sie jedoch, dass diese Funktion die zuvor festgelegten Werte überschreibt, wenn Ihr JSON Werte für Eigenschaften enthält, die Sie bereits festgelegt haben. –

Verwandte Themen