JSON解析错误Newtonsoft

时间:2017-06-03 09:54:02

标签: c# json json.net

我在尝试解码json对象时遇到错误:

代码:

    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} "]}

我得到的错误是:其他信息:解析值时遇到意外的字符:[。路径&#39;文字&#39;,第1行,第35位。我使用newtonsoft json包,我没有看到问题,JSON响应看起来对我来说是正确的它

3 个答案:

答案 0 :(得分:3)

你必须像json一样为文本创建List<string>,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; }
        }

答案 1 :(得分:0)

将此作为retdata对象:

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

text是字符串数组。

答案 2 :(得分:0)

看起来你的text属性是一个包含一个组件的数组,所以基本上你需要弄清楚它。

基本上,您正在考虑使用以下类进行反序列化:

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

之后,您需要从text属性获取.FirstOrDefault()或索引[0]以获取该字符串。

P.S:如果你不使用codelang,你可以将它们留在retData课程之外。