Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 11.02.2016
Сообщений: 19

Как разобрать такой json

05.12.2016, 22:46. Показов 2428. Ответов 7

Студворк — интернет-сервис помощи студентам
Не могу понять, как доступиться к ключам элементов массива, являющегося значением для "executions" через объекты.
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{   
"executions":
    [{"updateaccept":
        {"groups":[0,1,1,1,1],
        "users":{"8":1},
        "owner":1}},
    {"clearaccept":
        {"groups":[0,0,0,1,1],
        "users":{"8":1,"10":1},
        "owner":0}},
    {"updatebonds":
        {"groups":[0,0,0,1,1],
        "users":{"8":1,"22":1},
        "owner":1}},
    {"clearbonds":
        {"groups":[1,1,1,1,1],
        "owner":1}}]
    
}
получил объект $exec = json_decode($file);
Дальше $exec->executions не могу разораться как обратится например к clearaccept
Подскажите, пожалуйста...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.12.2016, 22:46
Ответы с готовыми решениями:

Как разобрать JSON на переменные?
через POST приходит переменная $data содержит строку ...

Разобрать json
Здравствуйте подскажите как разобрать такой json...

Подскажите пожалуйста, как разобрать такой json
всем привет, в с# буквально пару дней и мне сложно понять, как разбирать json. в пхп была функция json_decode, которая фактически делала...

7
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
05.12.2016, 22:54
PHP
1
var_dump($exec->executions[1]);
0
0 / 0 / 0
Регистрация: 11.02.2016
Сообщений: 19
05.12.2016, 23:20  [ТС]
var_dump возвращает NULL и мне не посмотреть нужно. Другими словами, что должно быть в цикле

PHP
1
2
3
4
foreach ($exec->executions as $ex){
    
    echo ?????????? ; //что бы вывести clearbonds и присвоить переменной соответсвующий объект
}
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
06.12.2016, 09:55
uamaks,
PHP
1
2
3
$exec = json_decode($file);
$clearbounds = $exec->executions[3]->clearbounds;
var_dump($clearbounds);
0
0 / 0 / 0
Регистрация: 11.02.2016
Сообщений: 19
06.12.2016, 23:28  [ТС]
Видимо я чего-то глубоко не понимаю. Мы не знаем, что нужен именно третий элемент массива. В том и состоит вопрос: как перебрать в цикле элементы массива и найти нужный нам элемент по ключу. Что нужно сравнить с искомой строкой что бы определить, что нам нужен элемент именно с таким индексом. Только тогда мы будем знать какое значение вписать в квадратные скобки.
Все это решается, если json_decode возвращает ассоциативный массив. Просто не могу понять в чем смысл этой функции без параметра assoc(а он по умолчанию false), если нельзя эти объекты обработать. На конкретном примере:
Присвоить переменной $value значение для executions, updatebonds и owner.
PHP
1
2
3
4
5
6
7
$jobj = json_decode($file);//получили объект из json строки
$excs = $jobj->executions;//объект executions
foreach ($excs as $ex){//цикл по execution
    if($ex/*выражение с $ex*/ == 'updatebonds'){
        $value = $ex/*выражение с $ex*/->owner;
        break;
    }
Просто впишите вместо /*выражение с $ex*/ то, что нужно. Буду очень благодарен, т.к. заглючил я основательно.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
06.12.2016, 23:38
Цитата Сообщение от uamaks Посмотреть сообщение
Все это решается, если json_decode возвращает ассоциативный массив. Просто не могу понять в чем смысл этой функции без параметра assoc(а он по умолчанию false), если нельзя эти объекты обработать.
По тому что в твоем json там именно массив - в квадратных скобках
Цитата Сообщение от uamaks Посмотреть сообщение
[{"updateaccept": {"groups":[0,1,1,1,1], "users":{"8":1}, "owner":1}}, {"clearaccept": {"groups":[0,0,0,1,1], "users":{"8":1,"10":1}, "owner":0}}, {"updatebonds": {"groups":[0,0,0,1,1], "users":{"8":1,"22":1}, "owner":1}}, {"clearbonds": {"groups":[1,1,1,1,1], "owner":1}}]
Почему так сделано - уже другой вопрос. Может быть так и надо. Было бы так
{"updateaccept": {"groups":[0,1,1,1], ...}, "clearaccept": {...}, ...}
можно было бы к ним обращаться по имени ключа.
Цитата Сообщение от uamaks Посмотреть сообщение
Просто впишите вместо /*выражение с $ex*/ то, что нужно. Буду очень благодарен, т.к. заглючил я основательно.
Не надо гадать, достаточно сделать var_dump($ex) и посмотреть что же там лежит
PHP
1
2
3
4
5
foreach ($exec as $ex) {
    if (isset($ex->clearbounds)) {
        $value = $ex->clearbounds->owner;
    }
}
0
0 / 0 / 0
Регистрация: 11.02.2016
Сообщений: 19
07.12.2016, 00:00  [ТС]
Спасибо огромное! Все-таки это был глубокий глюк. Проверить не равенство значений, а его существование...
Нужно проветрится.
0
0 / 0 / 0
Регистрация: 11.02.2016
Сообщений: 19
09.12.2016, 18:46  [ТС]
И все-таки есть решение, как вытащить ключи из такой структуры не зная их заранее:
PHP
1
2
3
4
5
6
7
$jobj = json_decode($file);//получили объект из json строки
$excs = $jobj->executions;//объект executions
 
foreach ($excs as $ind=>$ex){//цикл по элементам executions
    echo 'index-'.$ind.':';
    foreach($ex as $key=>$e){echo $key.'; ';}
    }
Выведет: index-0:updateaccept; index-1:clearaccept; index-2:updatebonds; index-3:clearbonds;
Индекс здесь для наглядности
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.12.2016, 18:46
Помогаю со студенческими работами здесь

Как разобрать JSON
Привет! Нужен совет по разбору JSON. Есть JSON { "orderID": 12345, "shopperName": "Ваня Иванов", ...

Как разобрать JSON?
есть класс class Person(models.Model): Id = models.IntegerField('Id', primary_key=True) name = models.CharField('name',...

Как правильно разобрать JSON?
Добрый день! Пытаюсь разобрать Json ответ от API на классы итд. Классы сгенерировал на jsonutils.com Скопировал в проект,...

Как разобрать JSON массив из PHP?
Добрый вечер! Подскажите новичку..... Как разобрать, json массив полученный из обработчика PHP в js скрипте? делаю запрос к...

Как разобрать строку с несколькими значения JSON
Проблема думаю в задании массива у меня думаю.... Как её решить понять не могу.... вот код while...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru