Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
7 / 7 / 7
Регистрация: 23.12.2015
Сообщений: 941
1

Как распарсить строку JSON и получить оттуда только одно значение?

07.08.2018, 13:02. Показов 1964. Ответов 9
Метки нет (Все метки)

Сервер возвращает мне длинную JSON строку. Из нее мне нужно вытащить только ID.
Я сделал так:
C#
1
2
3
4
5
6
7
    public class IDResponse
    {
        public string id { get; set; }
    }
 
//
var ID = JsonConvert.DeserializeObject(responseString);
Но в ID записывается вся строка.
Я понимаю, что мой вариант вот уж очень тупой, но проблему эту нужно решить
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.08.2018, 13:02
Ответы с готовыми решениями:

Как из JSON строки получить только одно значение?
есть ответ от сервера {"code":0,"code":"OK"} я успешно смог это спарсить с помощью JObject.Parse,...

Как распарсить json строку VK
Делаю запрос на VK API, получаю строку вида: Как теперь достать отсюда элементы? Нашел у себя...

Как правильно распарсить json строку и какой для этого нужен класс?
Что-то вообще в голову не лезет, как правильно распарсить такую строку и какой для этого нужно...

Как правильно распарсить json-строку autocomplete и вывести результаты в подготовленные поля
Прошу помощи в решении проблемы На страничке в наличии поля для заполнения : textarea id="AC10" -...

__________________

Записывайтесь на профессиональные курсы С#-разработчиков‌
9
4690 / 3236 / 1373
Регистрация: 09.05.2015
Сообщений: 7,935
07.08.2018, 13:05 2
C#
1
var ID = JsonConvert.DeserializeObject<IDResponse>(responseString);
0
7 / 7 / 7
Регистрация: 23.12.2015
Сообщений: 941
07.08.2018, 13:20  [ТС] 3
Someone007, не, тогда null
0
4690 / 3236 / 1373
Регистрация: 09.05.2015
Сообщений: 7,935
07.08.2018, 13:32 4
Цитата Сообщение от DenKG Посмотреть сообщение
тогда null
Значит json не соответствует вашему классу.
0
7 / 7 / 7
Регистрация: 23.12.2015
Сообщений: 941
07.08.2018, 14:06  [ТС] 5
Someone007, а как нужно сделать?
0
4690 / 3236 / 1373
Регистрация: 09.05.2015
Сообщений: 7,935
07.08.2018, 16:05 6
Цитата Сообщение от DenKG Посмотреть сообщение
а как нужно сделать?
А я откуда знаю? Вы json упорно не хотите показывать...
0
Эксперт .NET
8861 / 6172 / 1029
Регистрация: 21.01.2016
Сообщений: 23,320
07.08.2018, 17:14 7
DenKG, null вы можете получить только, если вы в DeserializeObject<T> передадите пустой JSON-объект вида "{}".
0
48 / 40 / 12
Регистрация: 12.05.2017
Сообщений: 111
08.08.2018, 13:54 8
C#
1
2
3
4
5
6
var jObj = JObject.Parse(json);
            string id = (string)jObj.Descendants()
                .OfType<JProperty>()
                .Where(p => p.Name == "id")
                .First()
                .Value;
0
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
09.08.2018, 05:32 9
Цитата Сообщение от DenKG Посмотреть сообщение
C#
1
2
3
4
5
public class IDResponse
* * {
        [JsonProperty("Id")]
* * * * public string id { get; set; }
* * }
[JsonProperty("Id")] - Id ставите именно ту, которая у вас описана в самом JSON.
0
Эксперт JS
5405 / 3119 / 1508
Регистрация: 14.06.2018
Сообщений: 5,891
17.10.2018, 11:08 10
DenKG, пример строки давайте. По-человечески распарсим.

Добавлено через 35 минут
Кстати, массив объектов легко парсится.
c:\temp\json2282392.txt
Код
[
        {
            "id": 222,
            "text": "Start of chat (WhatsApp)",
            "coordinates": null,
            "transport": "whatsapp",
            "type": "from_client",
            "read": 1,
            "created": "2018-10-13T19:28:52 UTC",
            "pdf": null,
            "remote_id": null,
            "recipient_status": null,
            "ai_tips": null,
            "attachments": [],
            "photo": null,
            "video": null,
            "audio": null,
            "operator_id": 12345,
            "channel_id": 1234,
            "dialog_id": 123,
            "client_id": 12
        },
        {
            "id": 2222,
            "text": "Chat assigned to Улан. Initiator – Улан",
            "coordinates": null,
            "transport": "whatsapp",
            "type": "system",
            "read": 1,
            "created": "2018-10-13T19:28:53 UTC",
            "pdf": null,
            "remote_id": null,
            "recipient_status": null,
            "ai_tips": null,
            "attachments": [],
            "photo": null,
            "video": null,
            "audio": null,
            "operator_id": 12345,
            "channel_id": 1234,
            "dialog_id": 123,
            "client_id": 12
        },
        {
            "id": 103699824,
            "text": "jkh",
            "coordinates": null,
            "transport": "whatsapp",
            "type": "to_client",
            "read": 0,
            "created": "2018-10-13T19:29:03 UTC",
            "pdf": null,
            "remote_id": null,
            "recipient_status": null,
            "ai_tips": null,
            "attachments": [],
            "photo": null,
            "video": null,
            "audio": null,
            "operator_id": 12345,
            "channel_id": 1234,
            "dialog_id": 123,
            "client_id": 12
        }
]
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
30
31
32
33
34
35
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Web.Script.Serialization;
 
namespace Question2282392
{
    public class IDResponse
    {
        public string id { get; set; }
    }
 
    class Program
    {
        private static List<IDResponse> json;
        private static string path = @"c:\temp\json2282392.txt";
 
        static void Main(string[] args)
        {
            LoadFile();
            for (var i = 0; i < json.Count; ++i)
            {
                Console.WriteLine($"ID: {json[i].id}");
            }
            Console.ReadKey();
        }
 
        private static void LoadFile()
        {
            var str = File.ReadAllText(path, Encoding.UTF8);
            json = new JavaScriptSerializer().Deserialize<List<IDResponse>>(str);
        }
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2018, 11:08

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Mysqli получить только одно значение
привет! я делаю запрос $query = $conn-&gt;prepare('SELECT * FROM users WHERE id = ?');...

Распарсить Json строку
есть строчка помогите распарсить ее ( составьте регулярку) или дайте линку почитать как...

Распарсить Json строку
Доброго времени суток. При попытке распарсить строку в формате Json у меня возник вопрос - можно ли...

Распарсить невалидную json строку
Мне необходимо из невалидной json строки получить массив исходный массив такой {all:129, data:} ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.