Динамическое обращение к объектам JSON

workoles

Client
Регистрация
02.05.2015
Сообщения
276
Благодарностей
81
Баллы
28
Привет! Подскажите, пожалуйста, есть ли возможность подставить в адрес JSON объектов переменную для динамического обращение к распаршенному JSON? Например, мне необходимо в цикле собрать количество страниц разных разделов сайта и посчитать их общую сумму. Могу ли я сделать следующее:
Код:
for(int i=0; i < global_count; i++)
{
var count_page = project.Json.page_i.Count;
total_count = total_count + count_page;
}
Если такая возможность существует, то каков её синтаксис?
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113
попробуй за место var заюзать dynamic, но вот будет ли далее работать суммирование - загадка.
 

workoles

Client
Регистрация
02.05.2015
Сообщения
276
Благодарностей
81
Баллы
28
попробуй за место var заюзать dynamic, но вот будет ли далее работать суммирование - загадка.
К сожалению не работает. Не доходит даже до суммирования. Лог говорит:
Выполнение действия CSharp OwnCode "ZennoLab.JXParser.JsonDynamic" не содержит определения для "i"
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113
foreach'ем ходить по массивам в json надо потому что )
 

workoles

Client
Регистрация
02.05.2015
Сообщения
276
Благодарностей
81
Баллы
28
foreach'ем ходить по массивам в json надо потому что )
Попробовал просто массив вывести в лог таким образом:
Код:
foreach(dynamic elements in project.Json.page_number)
{
    return elements;
}
number — переменная с номером страницы.
Результат тот же:
Выполнение действия CSharp OwnCode "ZennoLab.JXParser.JsonDynamic" не содержит определения для "page_number"
При этом, если указать объект JSON в явном виде (project.Json.page_1), то массив безошибочно выводится в лог в обоих случаях. Ошибка возникает только в том случае, если при обращении использовать переменную.
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113
В ошибке явным образом написано что не так, скинь сюда скриншот таба json (находится в блоке "переменные")
 

workoles

Client
Регистрация
02.05.2015
Сообщения
276
Благодарностей
81
Баллы
28
В ошибке явным образом написано что не так, скинь сюда скриншот таба json (находится в блоке "переменные")
Вот результат разбора JSON:


А вот исходник:
{"page_1":{"shop_1":["100"]},"page_2":{"shop_1":["200"]},"page_3":{"shop_3":["300"]}}
Задача просуммировать 100 + 200 + 300 и на выходе получить 600.
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113
Ну так всё верно, в json нет объекта page_number, к которому ты хочешь обратиться.

А вот если тебе нужно итерировать по объектам page_1, page_2, page_номер - то тут уж извиняй, с самого начала ты другое спрашивал (или это, но объяснил так, что было совсем непонятно)
 

workoles

Client
Регистрация
02.05.2015
Сообщения
276
Благодарностей
81
Баллы
28
Ну так всё верно, в json нет объекта page_number, к которому ты хочешь обратиться.

А вот если тебе нужно итерировать по объектам page_1, page_2, page_номер - то тут уж извиняй, с самого начала ты другое спрашивал (или это, но объяснил так, что было совсем непонятно)
Да это не суть в данном случае. Я пока экспериментировал, уже исходная строчка поменялась несколько раз и я не обратил внимание, что переменная текущая и переменная из первого поста уже не те. Но это не меняет сути вопроса. Вот пусть пример будет как в последнем случае и задача та же. И вопрос к ней тот же: можно ли просуммировать page_1.shop_1[0] + page_2.shop_1[0] + page_3.shop_3[0] путём подстановки переменной 1,2,3 в page_1, page_2 и page_3?
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113
Да это не суть в данном случае
К сожалению, суть ) Я бы помог с первым вариантом, а вот текущее положение дел не скажу как "разрулить". Попробовал бегло потыкать и проверить различные варианты, но не нашел решения.
 

workoles

Client
Регистрация
02.05.2015
Сообщения
276
Благодарностей
81
Баллы
28
К сожалению, суть ) Я бы помог с первым вариантом, а вот текущее положение дел не скажу как "разрулить". Попробовал бегло потыкать и проверить различные варианты, но не нашел решения.
Понял. В любом случае большое спасибо за попытку. Зато теперь задача сформулирована как следует) Может кто из разработчиков скажет наверняка.
 

DmitryAk

Client
Регистрация
14.12.2016
Сообщения
860
Благодарностей
822
Баллы
93

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