Распарсить json и получить результат

328
11 декабря 2017, 13:04

Здравствуйте, делаю get запрос

    string k = "helo thera";
    var response = await client.PostAsync("http://speller.yandex.net/services/spellservice.json/checkText?text="+k+"&callback=fix_spell", content);
    var responseString = await response.Content.ReadAsStringAsync();

получаю json с нужной мне заменой,

fix_spell([{"code":1,"pos":0,"row":0,"col":0,"len":4,"word":"helo","s":["hello"]},{"code":1,"pos":5,"row":0,"col":5,"len":6,"word":"thera\u0435","s":["there"]}])

Как мне теперь поменять в переменной k:

helo на hello

thera на there?

Answer 1

Окей, для начала, вам нужно установить через nuget JSON.NET. (Имя пакета Newtonsoft.Json, устанавливать так.)

Затем, вам нужно определить класс, в который будет происходить десериализация. Исходя из описания API, вам приходит список таких классов:

class Error
{
    public int code, pos, row, col, len;
    public string word;
    public List<string> s;
}

Для разбора при помощи JSON.NET используйте

var errorList = JsonConvert.DeserializeObject<List<Error>>(responseString);

Затем, имея список, вы можете пройти его с конца (понятно, почему?), и заменять подстроки.

var sb = new StringBuilder(k);
foreach (var err in list.OrderByDescending(err => err.pos))
{
    sb.Remove(err.pos, err.len);
    sb.Insert(err.pos, err.s.First());
}
k = sb.ToString();

Да, вы отправляете строку неправильно, потому что вам пришёл результат не со строкой "thera", а со строкой "theraе" (последняя Е русская). Выясняйте сами, откуда она появилась.

READ ALSO
Как сделать поле ввода на Unity 4.1.2?[C#]

Как сделать поле ввода на Unity 4.1.2?[C#]

Есть вариант с созданием префаба в котором лежит GUIText со скриптом, но тут свои трудности

223
Приём платежей от пользователей

Приём платежей от пользователей

Всем приветВозможнго, это вопрос не по шарпам, но так как пишу приложение на #, оставлю это здесь

225
Привязать фигуру к курсору, при клике отрисовать в pictureBox

Привязать фигуру к курсору, при клике отрисовать в pictureBox

Всем доброго времени суток, имеется форма на ней pictureBox1 и пара textBox, на pictureBox'е отрисовывается помещение, как можно взять значение из textBox'ов,...

227