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

  • Автор темы Автор темы one
  • Дата начала Дата начала

one

Client
Регистрация
22.09.2015
Сообщения
7 019
Реакции
1 314
Баллы
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":"user@example.com","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}}
 
Я пока не могу разобраться как, каким экшеном. Регулярку то составил.
 
Запиши в список через регулярку и дергай оттуда нужные номера строк.
 
json не тяжелый для использования, главное список прикрутить и номера строк правильно задать и дело в шляпе, а xml поддерживается не всеми API и работает медленнее.
 
главное список прикрутить и номера строк правильно задать и дело в шляпе
Это как? Можешь какой то пример привести минимальный? Может я чего не знаю.

xml поддерживается не всеми API и работает медленнее.
НасчетApi не понял про что.
Насчет медленности, да. Из за избыточности. Но нам же не многомегабайтные данные ворочать, и где важна каждая мс. Так что этим можно пренебречь.
Вот так выгдит инфа конвертнутая в xml
http://prnt.sc/b5zjtu
Сразу видна структура, и через xpath можно легко получить доступ к нужным элементам.
 
Все значения 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
А это уже интереснее. :) Спасибо!
 
Поделюсь адовым кодом для работы с 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)