Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
3 / 2 / 2
Регистрация: 14.04.2016
Сообщений: 94

Распарсить JSON

24.06.2018, 17:40. Показов 2237. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток!
Есть такой JSON код:
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[
  {
    "detectedLanguage": {
      "language": "en",
      "score": 1.0
    },
    "translations": [
      {
        "text": "привет",
        "to": "ru"
      }
    ]
  }
]
Я его получаю как ответ из Microsoft Translator API, вот собственно код на С#:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
async public void TranslateByMicrosoft(string giveTranslate)
        {
            string host = "https://api.cognitive.microsofttranslator.com";
            string path = "/translate?api-version=3.0";
            string params_ = "&to=ru";
            string uri = host + path + params_;
            string key = "какой то ключ";
            string text = giveTranslate;
 
            System.Object[] body = new System.Object[] { new { Text = text } };
            var requestBody = JsonConvert.SerializeObject(body);
 
            using (var client = new HttpClient())
            using (var request = new HttpRequestMessage())
            {
                request.Method = HttpMethod.Post;
                request.RequestUri = new Uri(uri);
                request.Content = new StringContent(requestBody, Encoding.UTF8, "application/json");
                request.Headers.Add("Ocp-Apim-Subscription-Key", key);
 
                var response = await client.SendAsync(request);
                var responseBody = await response.Content.ReadAsStringAsync();
                var result = JsonConvert.SerializeObject(JsonConvert.DeserializeObject(responseBody), Formatting.Indented);
 
                Console.OutputEncoding = UnicodeEncoding.UTF8;
                Console.WriteLine(result);
 
            }
        }
Ответ в виде JSON хранится в переменной result. Вопрос: как получить слово "привет" из этой переменной?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.06.2018, 17:40
Ответы с готовыми решениями:

Распарсить Json с динамическими именами
Вот такой Json нужно распарсить, не могу составить класс. { "name1": { "Age": 20, "Rite": 1 ...

Ошибка при обработке Json - Cannot deserialize the current JSON array because the type requires a JSON object
Всем привет! Помогите, плиз, разобраться с ошибкой: An unhandled exception of type 'Newtonsoft.Json.JsonSerializationException'...

Ошибка при обработке Json - Cannot deserialize the current JSON array because the type requires a JSON object
Дополнительные сведения: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1'...

3
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
24.06.2018, 20:48
Создайте класс под объект из json, на первых порах можно воспользоваться онлайн сервисом, например таким http://json2csharp.com
И десериализуйте json в объект этого класса
0
HF
 Аватар для HF
1314 / 893 / 200
Регистрация: 09.09.2011
Сообщений: 2,659
Записей в блоге: 2
24.06.2018, 20:56
Лучший ответ Сообщение было отмечено hunterlan как решение

Решение

Цитата Сообщение от hunterlan Посмотреть сообщение
var result = JsonConvert.SerializeObject(JsonConvert. DeserializeObject(responseBody), Formatting.Indented);
Зачем сериализовать десериализованное? Чтобы красиво смотрелось?

Цитата Сообщение от hunterlan Посмотреть сообщение
Вопрос: как получить слово "привет" из этой переменной?
Правильный вопрос должен быть такой: "Как прочитать значение "translations"->"text" ?

Весь интернет забит примерами. Неужели не нашёлся ответ. Не проверял. Примерно так.
C#
1
2
3
    var result = (JObject)JsonConvert.DeserializeObject(responseBody);
    var jvalue = (JValue)result ["translations"]["text"];
    Console.WriteLine(jvalue.Value); // привет
1
3 / 2 / 2
Регистрация: 14.04.2016
Сообщений: 94
25.06.2018, 01:32  [ТС]
Цитата Сообщение от HF Посмотреть сообщение
Весь интернет забит примерами. Неужели не нашёлся ответ.
Я в итоге нашел ответ, и он совпадает с вашим.
UPD: ну все таки не совсем, вот моя версия кода:
C#
1
2
3
4
5
var result = JsonConvert.SerializeObject(JsonConvert.DeserializeObject(responseBody), Formatting.Indented);
result = result.TrimStart(new char[] { '[' }).TrimEnd(new char[] { ']' });
var parsedJson = JObject.Parse(result);
resultText = (string)parsedJson["translations"][0]["text"];
//resultText - переменная типа string, хранит перевод.
Добавлено через 3 минуты
Цитата Сообщение от HF Посмотреть сообщение
Зачем сериализовать десериализованное? Чтобы красиво смотрелось?
Честно, я скопировал код на радостях, но в итоге не смотрел сути содержания, да и изначально, того что я хотел получить - я тогда не получил. Я так понимаю, в MSDN его специально сериализовали, чтобы мы могли увидеть, какой приходит в итоге ответ.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.06.2018, 01:32
Помогаю со студенческими работами здесь

Как получить из строки JSON токен используя JSON.NET?
Доброго времени суток, Господа. Поскажите пожалуйста. Я никогда не работал с JSON. Вот тут решил попробовать. Качнул либу JSON.NET, все...

Regex, распарсить строку
У меня есть такие строки: "РАЙОН КАКОЙ-ТО ИНН-12345678910, Безопасный город, 99999999999999<br />Стоимость услуги: 500.00...

Не получается распарсить строку
Здравствуйте , у меня возникла проблема вот допустим у меня есть хтмл страница и мне нужно в ней найти строку <div...

Распарсить страничку в webBrowser
Доброго времени всем! Вопрос, есть форма на которой есть webBrowser и левее Label, в webBrowser открывается страничка на которой имеется...

Распарсить код HTML
Нужна помощь в реализации поиска в html документе. Например кусок кода </div><span...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru