colinreedy674
colinreedy674

Reputation: 365

JSON parse error Newtonsoft

I'm getting an error when i'm trying to decode a json object:

Code:

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

The response JSON is:

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

The error i'm getting is: Additional information: Unexpected character encountered while parsing value: [. Path 'text', line 1, position 35. i'm using the newtonsoft json package, i don't see the issue, the JSON response looks correct to me or is it.

Upvotes: 0

Views: 1450

Answers (3)

Razvan Dumitru
Razvan Dumitru

Reputation: 12472

It looks like your text property is an array with one component, so basically you will need to figure it out.

Basically you're looking into deserializing using the following class:

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

And after that you need to get .FirstOrDefault() or by index [0] from text property in order to grab that string.

P.S: if you don't use code and lang, you can leave them outside your retData class.

Upvotes: 0

Pranav Patel
Pranav Patel

Reputation: 1559

you have to create a List<string> for text as in your json, key contains array of string. so it will look like

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

Upvotes: 2

Mohammad
Mohammad

Reputation: 2764

try this as your retdata object:

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

the text is array of string.

Upvotes: 0

Related Questions