Reputation: 365
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
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
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
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