Многоуровневый массив json. Как облегчить или улучшить выборку?

Ссылка скопирована
1 ответ

Есть массив у примеру

{"Name":{[               "name":{[                         "name":{[                                       "name" :"1",                                       "name" :"1",                                       "name" :"1"                                       ]},                         "name":{[                                       "name" :"1",                                       "name" :"1",                                       "name" :"1"                                       ]},                         "name":{[                                       "name" :"1",                                       "name" :"1",                                       "name" :"1"                                       ]}                 ]},                "name":{[                         "name":{[                                       "name" :"1",                                       "name" :"1",                                       "name" :"1"                                       ]},                         "name":{[                                       "name" :"1",                                       "name" :"1",                                       "name" :"1"                                       ]},                         "name":{[                                       "name" :"1",                                       "name" :"1",                                       "name" :"1"                                       ]}                 ]},                 "name":{[                         "name":{[                                       "name" :"1",                                       "name" :"1",                                       "name" :"1"                                       ]},                         "name":{[                                       "name" :"1",                                       "name" :"1",                                       "name" :"1"                                       ]},                         "name":{[                                       "name" :"1",                                       "name" :"1",                                       "name" :"1"                                       ]}                 ]}                  ]} ]}

{"Name":{[ "name":{[ "name":{[ "name" :"1", "name" :"1", "name" :"1" ]}, "name":{[ "name" :"1", "name" :"1", "name" :"1" ]}, "name":{[ "name" :"1", "name" :"1", "name" :"1" ]} ]}, "name":{[ "name":{[ "name" :"1", "name" :"1", "name" :"1" ]}, "name":{[ "name" :"1", "name" :"1", "name" :"1" ]}, "name":{[ "name" :"1", "name" :"1", "name" :"1" ]} ]}, "name":{[ "name":{[ "name" :"1", "name" :"1", "name" :"1" ]}, "name":{[ "name" :"1", "name" :"1", "name" :"1" ]}, "name":{[ "name" :"1", "name" :"1", "name" :"1" ]} ]} ]} ]}

Это я примерно написал
У меня json из 4 уровней, каждый может иметь по 20 переменных, в них есть переменные по которым я провожу проверку на наличие нужной информации.

Как лучше всего делать выборку с такого json на jquery, с проверками?
Интересно просто как вы это делаете, может есть какие-то фишки позволяющие не пролистывать json по 50 раз с ног до головы.
Спасибо за любые примеры)

Дополнительно:

У вас написана какая-то невалидная конструкция.
Похоже вы перестарались в попытках скрыть реальные данные…

Ответы:

а jquery зачем?
object.?property для объектов и array.find() и его варианты для массивов

посм. [Сборники рецептов jq](https://habr.com/ru/articles/551834/)

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Виктор Sys Ответ

Для улучшения выборки многоуровневого массива JSON можно использовать различные методы и подходы. Ниже я представлю несколько советов, которые могут быть полезными в данной ситуации:

1. Использование функции array_filter(): Эта функция может быть использована для фильтрации элементов массива на основе определенного условия. Например, если вам нужно выбрать только определенные элементы массива, вы можете использовать array_filter() с пользовательской функцией обратного вызова.

$data = json_decode($json_data, true);
 
$filtered_data = array_filter($data, function($item) {
    return $item['some_key'] == 'some_value';
});

$data = json_decode($json_data, true); $filtered_data = array_filter($data, function($item) { return $item['some_key'] == 'some_value'; });

2. Использование рекурсивной функции для обхода всех уровней массива: Если у вас есть многоуровневый массив, в котором вложены другие массивы, вы можете использовать рекурсивную функцию для обхода всех уровней и выборки нужных данных.

function recursive_array_search($array, $key, $value) {
    $results = array();
 
    foreach ($array as $subarray) {
        if (is_array($subarray)) {
            $results = array_merge($results, recursive_array_search($subarray, $key, $value));
        } elseif (isset($subarray[$key]) && $subarray[$key] == $value) {
            $results[] = $subarray;
        }
    }
 
    return $results;
}
 
$results = recursive_array_search($data, 'some_key', 'some_value');

function recursive_array_search($array, $key, $value) { $results = array(); foreach ($array as $subarray) { if (is_array($subarray)) { $results = array_merge($results, recursive_array_search($subarray, $key, $value)); } elseif (isset($subarray[$key]) && $subarray[$key] == $value) { $results[] = $subarray; } } return $results; } $results = recursive_array_search($data, 'some_key', 'some_value');

3. Использование библиотек для работы с JSON: Существуют различные библиотеки и инструменты, которые могут упростить работу с JSON данными. Например, вы можете использовать библиотеку JSONPath для выполнения сложных запросов и выборки данных из многоуровневых массивов JSON.

4. Оптимизация структуры данных: Если у вас есть возможность изменить структуру данных JSON, вы можете оптимизировать ее для более эффективной выборки. Например, вы можете использовать индексы или кэширование для ускорения доступа к данным.

Надеюсь, что эти советы помогут вам улучшить выборку данных из многоуровневого массива JSON. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно