2017-06-03 49 views
0

我得到當我試圖解碼JSON對象的錯誤:JSON解析錯誤newtonsoft

代碼:

public class retData 
    { 
     public string Text { get; set; } 
    } 

    private void btnCreateProject_Click(object sender, EventArgs e) 
    { 
     string jsonResponse = Helpers.translateText("Some {useful|helpful|beneficial|valuable|handy|practical} {tips|suggestions|ideas|guidelines|recommendations|strategies} for {getting|obtaining|acquiring|receiving|finding|having} {best|very best|greatest|ideal|finest|most effective} and {professional|expert|skilled|specialist|qualified|experienced} carpet {cleaning|cleansing} {services|solutions|providers|companies|expert services|products and services}%first_paragraph-article%Some {useful|helpful|beneficial|valuable|handy|practical} {tips|suggestions|ideas|guidelines|recommendations|strategies} for {getting|obtaining|acquiring|receiving|finding|having} {best|very best|greatest|ideal|finest|most effective} and {professional|expert|skilled|specialist|qualified|experienced} carpet {cleaning|cleansing} {services|solutions|providers|companies|expert services|products and services}", "de", txtBoxYandexAPI.Text); 
     retData theText = JsonConvert.DeserializeObject<retData>(jsonResponse); 
    } 

響應JSON是:

{"code":200,"lang":"en-de","text":["Einige {nützlich|hilfreich|nützlich|wertvoll|nützlich|praktisch} {Tipps|Vorschläge|Ideen|Leitlinien|Empfehlungen|Strategien} {Anreise|Beschaffung|Erwerb|erhalten|finden|haben} {besten|besten|größten|ideal|besten|meisten effektive} und {professional|expert|qualifizierten|Spezialisten|qualifizierte|erfahrene} Teppich {Reinigung|cleansing} {Dienstleistungen|Lösungen|Dienstleister|Unternehmen|expert services|Produkte und Dienstleistungen} %first_paragraph-Artikel% Einige {nützlich|hilfreich|nützlich|wertvoll|nützlich|praktisch} {Tipps|Vorschläge|Ideen|Leitlinien|Empfehlungen|Strategien} {Anreise|Beschaffung|Erwerb|erhalten|finden|haben} {besten|besten|größten|ideal|besten|meisten effektive} und {professional|expert|qualifizierten|Spezialisten|qualifizierte|erfahrene} Teppich {Reinigung|cleansing} {Dienstleistungen|Lösungen|Dienstleister|Unternehmen|expert services|Produkte und Dienstleistungen} "]} 

的我得到的錯誤是:附加信息:解析值時遇到意外的字符:[。路徑「文本」,第1行,位置35.我使用的是newtonsoft json包,我沒有看到問題,JSON響應看起來對我來說是正確的還是對的。

回答

3

您必須爲文本創建一個List<string>,如在您的json中,key包含字符串數組。 所以它看起來像

 public static void Main() 
     { 
      string jsonResponse = "{\"code\":200,\"lang\":\"en-de\",\"text\":[\"Einige {nützlich|hilfreich|nützlich|wertvoll|nützlich|praktisch} {Tipps|Vorschläge|Ideen|Leitlinien|Empfehlungen|Strategien} {Anreise|Beschaffung|Erwerb|erhalten|finden|haben} {besten|besten|größten|ideal|besten|meisten effektive} und {professional|expert|qualifizierten|Spezialisten|qualifizierte|erfahrene} Teppich {Reinigung|cleansing} {Dienstleistungen|Lösungen|Dienstleister|Unternehmen|expert services|Produkte und Dienstleistungen} %first_paragraph-Artikel% Einige {nützlich|hilfreich|nützlich|wertvoll|nützlich|praktisch} {Tipps|Vorschläge|Ideen|Leitlinien|Empfehlungen|Strategien} {Anreise|Beschaffung|Erwerb|erhalten|finden|haben} {besten|besten|größten|ideal|besten|meisten effektive} und {professional|expert|qualifizierten|Spezialisten|qualifizierte|erfahrene} Teppich {Reinigung|cleansing} {Dienstleistungen|Lösungen|Dienstleister|Unternehmen|expert services|Produkte und Dienstleistungen} \"]}"; 
      retData theText = JsonConvert.DeserializeObject<retData>(jsonResponse); 
     } 
     public class retData 
     { 
      public List<string> text { get; set; } 
     } 
0

試試這個作爲你的retdata對象:

public class retData 
{ 
    public int code { get; set; } 
    public string lang { get; set; } 
    public List<string> text { get; set; } 
} 

text是字符串數組。

0

它看起來像你的文本屬性是一個組件的陣列,所以基本上你需要弄清楚。

基本上你要尋找到反序列化使用下面的類:

public class retData 
{  
    public int code { get; set; } 
    public string lang { get; set; } 
    public string[] text { get; set; } 
} 

之後,你需要得到.FirstOrDefault()或從文本屬性索引[0]爲了搶這個字符串。

P.S:如果您不使用codelang,您可以將它們留在您的retData課程之外。

+0

非常感謝你們。 – colinreedy674