2016-12-02 4 views
2

Ich habe folgendes:Deserialisieren JSON C# Artikel zurück

{"documents": 
    [{"keyPhrases": 
     [ 
      "search results","Azure Search","fast search indexing","sophisticated search   capabilities","Build  great search experiences","time-sensitive search   scenarios","service availability","managed  service","service    updates","index corruption","near-instantaneous responses","multiple     languages","integrated Microsoft natural language stack","multiple   indexes","application  changes","ranking models","great relevance","years of   development","primary interaction  pattern","storage","Bing","data    volume","rich","suggestions","hassle of  dealing","Reliable     throughput","website","incremental cost","complexity","faceting","traffic","mobile     apps","business goals","users","applications","user expectations","Office" 
     ], 
    "id":"1"}], 
    "errors":[] 
} 

Ich brauche die Einzelteile innerhalb der -phrasen zu extrahieren, aber absolut keine Ahnung, wie es geht.

Ich habe versucht, die folgenden:

KeyPhraseResult keyPhraseResult = new KeyPhraseResult(); 

/// <summary> 
/// Class to hold result of Key Phrases call 
/// </summary> 
public class KeyPhraseResult 
{ 
    public List<string> keyPhrases { get; set; } 
} 

keyPhraseResult = JsonConvert.DeserializeObject<KeyPhraseResult>(content); 

content enthält die JSON-String oben.

Allerdings gibt das keyPhraseResult einen Nullwert zurück.

Kann mir irgendein Körper in die richtige Richtung helfen?

Vielen Dank.

+0

Tippfehler, wenn ich mich nicht irre. 'keyPhrases' in Ihrem JSON und' KeyPhrases' in Ihrem Code – RandomStranger

+1

"Dokumente" ist ein Array von Objekten mit der Eigenschaft "keyPhrases". Sie vermissen die Array-Ebene und die Eigenschaft "Dokumente". –

+0

Danke Bas, du hast Recht. Mir war eigentlich nicht bewusst, dass sie genau gleich sein mussten (auch wenn es eigentlich logisch ist). Ich habe es geändert. – AxleWack

Antwort

4
public class Document 
{ 
    public List<string> keyPhrases { get; set; } 
    public string id { get; set; } 
} 

public class RootObject 
{ 
    public List<Document> documents { get; set; } 
    public List<object> errors { get; set; } 
} 

Sie sollten diese Struktur haben:

var result = JsonConvert.DeserializeObject<RootObject>(content); 
+0

Danke !! Das hat perfekt funktioniert !! Ich habe dann einfach Folgendes hinzugefügt, um meine KeyPhraseResult-Klasse mit den KeyPhrases aufzufüllen: keyPhraseResult.KeyPhrases = result.documents [0] .keyPhrases; - Danke noch einmal!! – AxleWack