2016-06-17 47 views
0

Zunächst einmal wurde diese Frage möglicherweise schon einmal gestellt, aber ich konnte keine Antwort finden aufgrund der schlechten Formulierung, denke ich.JSON Deserialisierung, erhalten Eigenschaften Name nicht Wert

Ich erhalte eine weirdly JSON formatierten String zurück von einem WebService Anruf

{ 
    "id":5000174774, 
    "name":"company_name", 
    "choices": 
    { 
     "Farmway": 
     { 
      "Head Office (BSU)":[], 
      "Alnwick":[], 
      "Bury St Edmunds":[] 
     }, 
     "Tate": 
     { 
      "Head Office":[], 
      "Tate Britain Entrance":[] 
     } 
    } 
} 

Hier sind die Klassen, die ich für die Deserialisierung verwenden möchten

public class RootObject 
{ 
    [JsonProperty("id")] 
    public long Id { get; set; } 

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

    [JsonProperty("choices")] 
    public Company[] Companies{ get; set; } 
} 

public class Company 
{ 
    public string[] Shops { get; set; } 
} 

Ich habe noch nie eine JSON formatiert gesehen so, und ich habe keine Idee, wie man den Eigenschaftennamen anstelle von Werten erhält. "choices" ist kein array sondern ein object, aber ich kann seine Eigenschaften vorher nicht kennen. Ich möchte nur alle Firmen und ihre Geschäfte bekommen.

Ich hoffe, es macht irgendwie Sinn.

Antwort

0

Ich weiß nicht, über Ihre Deserializer, aber in der Regel ein guter Kandidat ist ein Dictionary:

[JsonProperty("choices")] 
public Dictionary<string, Dictionary<string, List<OfSomething>> Companies { get; set; } 

also Ihr erster Schlüssel ist eine Zeichenfolge mit dem Namen des Unternehmens, und der Wert ist ein weiterer Wörterbuch, Verknüpfung von Unternehmen BU zu Liste/Arrays von Ich-weiß-nicht-was.

Wenn Sie dann diese Struktur in etwas anderes ausarbeiten müssen, können Sie es mit etwas Linq verarbeiten.