2017-06-15 1 views
0

Ich versuche, auf die folgende JSON-String mit NewtonSoft json 4.5 zu analysieren:Weiter Eigenschaftsnamen und verwenden Sie nur den Wert in json

{ 
    "Name":"Henrik", 
    "Children":[ 
    { 
     "Name":"Adam", 
     "Grandchildren":[ 
     "Jessica", //How can i only show the value and not the property name? 
     "Michael" 
     ] 
    } 
    ] 
} 

Meine Objekte, die ich zu Json serialisiert wird wie folgt aussieht:

public class Parent 
{ 
    public string Name { get; set; } 

    [JsonProperty(PropertyName = "Children")] 
    public List<Child> Childs { get; set; } 
} 

public class Child { 
    public string Name { get; set; } 

    [JsonProperty(PropertyName = "Grandchildren")] 
    public List<GrandChild> GrandChilds { get; set; } 
} 

public class GrandChild { 
    [JsonProperty(PropertyName = "")] 
    public string Name { get; set; } 
} 

Ich habe versucht, den Namen der Eigenschaft zu leeren, aber es löst das Problem nicht.

+0

Mögliches Duplikat [Json.Net: Serialize/Deserialize Eigenschaft als Wert, nicht als Objekt] (https://stackoverflow.com/questions/40480489/json-net-serialize-deserialize-property- als ein Wert-nicht-als-ein-Objekt – dbc

Antwort

1

Sie sollten List<GrandChild> durch List<string> ersetzen oder fügen Sie eine benutzerdefinierte JsonConverter für GrandChild wie folgt hinzu.

[JsonConverter(typeof(GrandChildConverter))] 
public class GrandChild 
{ 
    public string Name { get; set; } 
} 

public class GrandChildConverter : JsonConverter 
{ 
    public override bool CanConvert(Type objectType) 
    { 
     return objectType == typeof(GrandChild); 
    } 

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 
    { 
     writer.WriteValue(((GrandChild)value).Name); 
    } 

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) 
    { 
     return new GrandChild { Name = reader.Value.ToString() }; 
    } 
} 
Verwandte Themen