2016-12-02 49 views
2

我有以下几点:反序列化JSON使用C#返回项

{"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":[] 
} 

我需要提取的关键字句内的项目,但完全不知道该怎么做。

我曾尝试以下:

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包含上面的JSON字符串。

但是,keyPhraseResult返回空值。

任何机构能帮助我走向正确的方向吗?

谢谢。

+0

一个错字,如果我没有记错。您的JSON中的'keyPhrases'和您的代码中的'KeyPhrases' – RandomStranger

+1

“documents”是一组具有属性“keyPhrases”的对象。您缺少数组级别和“文档”属性。 –

+0

感谢Bas,你是对的。我实际上并不知道他们需要完全相同(即使它实际上是合乎逻辑的)。我改变了它。 – AxleWack

回答

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; } 
} 

你应该有这样的结构:

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

谢谢!这工作完美!然后,我添加了以下内容来使用KeyPhrases填充我的KeyPhraseResult类:keyPhraseResult.KeyPhrases = result.documents [0] .keyPhrases; - 再次感谢!! – AxleWack