Обход Json кубиками или прошу помочь придумать решение

Jugador

Client
Регистрация
20.06.2016
Сообщения
35
Благодарностей
11
Баллы
8
Всем привет.. Возник затык в решении задачи.

В сервера получаю json,

Формат массива вот такой

data[0]['action'] = 'start'
data[1]['action'] = 'search'
data[1]['text'] = 'somesearchtext'

и т.д. вложенность может быть более глубокая.

Что мне нужно:

я хочу обойти первый уровень массива data, и с помощью кубика Switch Case в зависимости от action выбрать нужную ветку.
а уже в нужно ветке мне нужно получить доступ к его элементам.

например если попали в ветку отвечающую за действие search, то там , зная, что ключ массива 1, я мог бы обратиться к переменной data[1]['text'] и нужно сделать это как-то так

{-Json.data[{-thisKey-}].text-}

в php я мог бы легко обратиться к массиву зная его индекс вот так $data[$key]['text']

Сейчас я с помощью С# получил индексы и добавил их в список, кубиком в цикле обхожу список построчно и записываю в переменную thisKey какой индекс обрабатываю сейчас.

Может быть есть более легкий способ, но сделать это нужно максимально кубиками т.к. будет очень много ветвлений и действий которые нужно делать в браузере.
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 694
Благодарностей
1 873
Баллы
113
в php я мог бы легко обратиться к массиву зная его индекс вот так $data[$key]['text']

Сейчас я с помощью С# получил индексы и добавил их в список, кубиком в цикле обхожу список построчно и записываю в переменную thisKey какой индекс обрабатываю сейчас.

Может быть есть более легкий способ, но сделать это нужно максимально кубиками т.к. будет очень много ветвлений и действий которые нужно делать в браузере.
Сделайте все циклы и обработки на C#, по логике как если бы делали на php. В этом кубике заполняете значения всех нужных переменных, которые потом сможете использовать в кубиках.
 
  • Спасибо
Реакции: Jugador

Jugador

Client
Регистрация
20.06.2016
Сообщения
35
Благодарностей
11
Баллы
8
Так в этом и главная проблема , что мне нужно заранее создать переменные.
Просто массив сам по себе крайне удобная вещь, которая по идее должна позволять обращаться ко всем ее элементам и они могут быть вложены друг в друга сколько угодно и мне нужно только в цикле читать их погружаясь все глубже..
А если мне нужно заранее создать переменные под все возможные элементы.. а если у меня будет 10 уровневый массив( я утону в переменных вида {-data1drivers0docs0type-} {-data1drivers1docs0type-} чтобы добраться до типа документа водителя например( а документов может быть 3.. и водителей 4.. и т.д.

А если все делать в одном кубике c#, то я мог бы и в php все сделать, в том числе и все запросы отправить без эмуляции и не был бы ограничен прожорливостью зенки) а тут нужно именно эмулировать все.
 

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
548
Баллы
93
Можно создать модель из вашего JSON. Дальше методом десериализуете JSON в классы и переменные.
Более простой вариант, писать под каждый action/ветку, свои классы/методы обрабатывающие его, ну и создавая соответственно переменные внутри этих методов/классов с возможностью обращаться к ним.
 
  • Спасибо
Реакции: Jugador

radv

Client
Регистрация
11.05.2015
Сообщения
3 694
Благодарностей
1 873
Баллы
113
Так в этом и главная проблема , что мне нужно заранее создать переменные.
так создайте нужные переменные и используйте их. используйте объектную модель, как посоветовали выше. на ютуб полно видео, как работать с JSON
 
  • Спасибо
Реакции: Jugador

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