2012-02-22 64 views
0

作爲初學者,我試圖反序列化Google transliterator返回數組。這是一個像這樣的JSON數組:在C#中使用Newtonsoft.Json反序列化Google音譯

[{"ew" : "namaste","hws" : ["नमस्ते","नमसते","नमास्ते",]},] 

非常棒!

這是用於反序列化我的C#類:

[Serializable] 
    public class googleTransliterator 
    { 

     [JsonProperty("ew")] 
     public String sourceWord { get; set; } 

     [JsonProperty("hws")] 
     public String[] transliteratedWords { get; set; } 

    } 

最後:

using Newtonsoft.Json; 
... 
... 
// return value from google transliteration API is in streamReader 
var s = new JsonSerializer(); 
var gt = (googleTransliterator) s.Deserialize(new StringReader(streamReader.ReadToEnd()), typeof(googleTransliterator)); 

而我得到的是:

Cannot create and populate list type GoogleTransliterator.googleTransliterator. 

任何想法有什麼不好?

回答

0

結果是JSON對象數組([{...},])而不是普通對象({...})。

var gt = ((googleTransliterator[])s.Deserialize(
    new StringReader(streamReader.ReadToEnd()), 
    typeof(googleTransliterator[])))[0]; 
+0

對不起,不幹活:如果你改變它像這樣

您的代碼應該工作。錯誤:對象引用未設置爲對象的實例。 – vahid 2012-02-22 13:46:39

+0

我編輯了我的代碼。你能再試一次嗎? (可能調試並告訴_which_對象爲空,如果問題仍然存在?) – Nuffin 2012-02-22 14:00:48

+0

對不起,您的第一個回答是好的,這是我的錯誤。谷歌音譯API有一個備選響應的選項,我沒有使用正確的選項。謝啦。 U搖滾。 – vahid 2012-02-22 14:17:44