Обработка результатов в JSON

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Подскажите, как выдернуть из этого нужное значение и положить в переменную?
Эти данные хранятся в переменной. Нужно выдернуть значение id.
{"success":true,"errors":[],"messages":[],"result":[{"id":"023e105f4ecef8ad9ca31a8372d0c353","name":"example.com","development_mode":7200,"original_name_servers":["ns1.originaldnshost.com","ns2.originaldnshost.com"],"original_registrar":"GoDaddy","original_dnshost":"NameCheap","created_on":"2014-01-01T05:20:00.12345Z","modified_on":"2014-01-01T05:20:00.12345Z","name_servers":["tony.ns.cloudflare.com","woz.ns.cloudflare.com"],"owner":{"id":"7c5dae5552338874e5053f2534d2767a","email":"[email protected]","owner_type":"user"},"permissions":["#zone:read","#zone:edit"],"plan":{"id":"e592fd9519420ba7405e1307bff33214","name":"ProPlan","price":20,"currency":"USD","frequency":"monthly","legacy_id":"pro","is_subscribed":true,"can_subscribe":true},"plan_pending":{"id":"e592fd9519420ba7405e1307bff33214","name":"ProPlan","price":20,"currency":"USD","frequency":"monthly","legacy_id":"pro","is_subscribed":true,"can_subscribe":true},"status":"active","paused":false,"type":"full","checked_on":"2014-01-01T05:20:00.12345Z"}],"result_info":{"page":1,"per_page":20,"count":1,"total_count":2000}}
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
дергай ркгуляркой, в чем проблема?
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Я пока не могу разобраться как, каким экшеном. Регулярку то составил.
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Запиши в список через регулярку и дергай оттуда нужные номера строк.
 

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
824
Баллы
93
Подскажите, как выдернуть из этого нужное значение и положить в переменную?
Как вариант конвертить json -> xml.
Я так делаю. Мне с xml удобнее работать.
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
json не тяжелый для использования, главное список прикрутить и номера строк правильно задать и дело в шляпе, а xml поддерживается не всеми API и работает медленнее.
 

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
824
Баллы
93
главное список прикрутить и номера строк правильно задать и дело в шляпе
Это как? Можешь какой то пример привести минимальный? Может я чего не знаю.

xml поддерживается не всеми API и работает медленнее.
НасчетApi не понял про что.
Насчет медленности, да. Из за избыточности. Но нам же не многомегабайтные данные ворочать, и где важна каждая мс. Так что этим можно пренебречь.
Вот так выгдит инфа конвертнутая в xml
http://prnt.sc/b5zjtu
Сразу видна структура, и через xpath можно легко получить доступ к нужным элементам.
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
Все значения ID пихает в список
C#:
var text = project.Variables["Переменная1"]; // тут у нас твой json
var lst = project.Lists["Список 1"];
var rez = Regex.Matches(text,"(?<=\"id\":\").+?(?=\")").Cast<Match>().Select(x=>x.Value).ToList();
lst.AddRange(rez);
 
  • Спасибо
Реакции: one

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
А это уже интереснее. :-) Спасибо!
 

AShaggy

Активный пользователь
Регистрация
25.11.2014
Сообщения
335
Благодарностей
143
Баллы
43
Поделюсь адовым кодом для работы с JSON стандартными средсвами C#
C#:
public static Dictionary<string, object>[] ParseJson(string input)
        {
            Dictionary<string, object>[] result = null;
            if (input == null)
            {
                return null;
            }
            try
            {

                var jsSerializer = new JavaScriptSerializer();
                dynamic jsonResponse = jsSerializer.Deserialize<dynamic>(input);

                if (jsonResponse is object[])
                {
                    object[] temp = (jsSerializer.Deserialize<dynamic>(input) as object[]);

                    if (temp != null)
                    {
                        result = temp.OfType<Dictionary<string, object>>().ToArray();
                    }
                }
                else
                {
                    result = new Dictionary<string, object>[1];
                    result[0] = jsonResponse;
                }
            }
            catch (Exception)
            {
                return null;
            }
            return result;
        }

        public static object GetParamFromDictionary(object value, params string[] param)
        {
            var conv = value as Dictionary<string, object>;
            if (conv == null) return null;
            if (param.Length > 1)
            {
                if (conv.ContainsKey(param[0]))
                    return GetParamFromDictionary(conv[param[0]], param.Skip(1).ToArray());
                return null;
            }
            if (conv.ContainsKey(param[0]))
                return conv[param[0]];
            return null;
        }
использовать примерно так:
C#:
var dic = ParseJson("[{test: {response: 200}}, {test2 : 0}]");
var resp = GetParamFromDictionary(dic[0], "test", "response") as string;
для всего этого нежно System.Web.Extensions
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)