Как работать с вложенными json?

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

Добрый день. Есть задача экспортировать данные из некоторой таблицы и сохранить в json файл. И, соответственно, при необходимости обратно загрузить из файла в таблицу. Одно из полей таблицы имеет тип clob и формат json, причем иногда размер поля достигает 115к байт, что не позволяет применять некоторые стандартные функции. Осложняется все тем, что поле типа clob представляет собой json, который в качестве значения одного из ключей содержит json-строку, например:
{"user":"{\"age\":123}"}.
Куда смотреть? Пробовал делать замены, но в каком порядке и как при такой вложенной структуре не понимаю. Замена на другие символы тоже не рассматривается, из-за возможности их появления в таблице. Есть какие-то готовые функции, которые могут работать с большим clob? Сейчас считываю таблицу построчно и в ручную делаю json, но при работе с полем clob с вложенным json возникают проблемы. Обратно считываю файл в clob и использую ф-ю json_parse, которая, если я правильно понимаю, тоже вложенный json редактирует по своему, хотя я этого не хочу.
Заранее спасибо за ответы

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

Ответы:

На базе PL/SQL скорее всего ничего нельзя сделать. Там даже строка ограничена в 32К.
Поэтому тебе надо написать приложение на C#/Java/Python или любом другом языке
который делает необходимые ETL действия.

СУБД Oracle вроде уже поддерживает JSON через встроенные типы PL/SQL. Не знаю только, с какой версии. Плюс, наверняка нужна редакция Enterprise.

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

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

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

Для работы с вложенными JSON в PHP, вам потребуется использовать функцию json_decode() для преобразования JSON строки в объект или массив. После этого вы сможете обращаться к вложенным элементам JSON, используя стандартный синтаксис доступа к свойствам объекта или индексам массива.

Пример:

$json = '{
    "name": "John Doe",
    "age": 30,
    "address": {
        "street": "123 Main St",
        "city": "New York"
    }
}';
 
$data = json_decode($json);
 
// Обращаемся к верхнему уровню JSON
echo $data->name; // John Doe
echo $data->age; // 30
 
// Обращаемся к вложенному уровню JSON
echo $data->address->street; // 123 Main St
echo $data->address->city; // New York

$json = '{ "name": "John Doe", "age": 30, "address": { "street": "123 Main St", "city": "New York" } }'; $data = json_decode($json); // Обращаемся к верхнему уровню JSON echo $data->name; // John Doe echo $data->age; // 30 // Обращаемся к вложенному уровню JSON echo $data->address->street; // 123 Main St echo $data->address->city; // New York

Если вам нужно работать с вложенными JSON массивами, вы можете использовать индексы в квадратных скобках:

$json = '{
    "name": "John Doe",
    "age": 30,
    "friends": [
        {
            "name": "Jane Smith",
            "age": 25
        },
        {
            "name": "Bob Johnson",
            "age": 35
        }
    ]
}';
 
$data = json_decode($json);
 
// Обращаемся к верхнему уровню JSON
echo $data->name; // John Doe
echo $data->age; // 30
 
// Обращаемся к вложенным элементам массива JSON
echo $data->friends[0]->name; // Jane Smith
echo $data->friends[0]->age; // 25
echo $data->friends[1]->name; // Bob Johnson
echo $data->friends[1]->age; // 35

$json = '{ "name": "John Doe", "age": 30, "friends": [ { "name": "Jane Smith", "age": 25 }, { "name": "Bob Johnson", "age": 35 } ] }'; $data = json_decode($json); // Обращаемся к верхнему уровню JSON echo $data->name; // John Doe echo $data->age; // 30 // Обращаемся к вложенным элементам массива JSON echo $data->friends[0]->name; // Jane Smith echo $data->friends[0]->age; // 25 echo $data->friends[1]->name; // Bob Johnson echo $data->friends[1]->age; // 35

Таким образом, вы можете легко работать с вложенными JSON в PHP, преобразуя их в объекты или массивы и обращаясь к нужным элементам с помощью стандартного синтаксиса доступа к свойствам или индексам.

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

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

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

комментарий

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

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