Вы можете табулировать JSON-документ (получить его в виде строки) в MySQL с помощью функции JSON_TABLE.
ПРИМЕЧАНИЕ: более подробную информацию можно найти на странице документации MySQL JSON functions documentation page
👉 Нужна БЕСПЛАТНАЯ база данных MySQL? Посмотрите Бесплатные планы Aiven👈
Набор данных
Набор данных следующий:
{
"id": 778,
"shop": "Luigis Pizza",
"name": "Эдвард Олсон",
"phoneNumbers": ["(935)503-3765x4154", "(935)12345"],
"address": "Unit 9398 Box 2056 DPO AP 24022",
"image": null,
"pizzas": [
{
"pizzaName": "Салями",
"additionalToppings": ["🥓", "🌶️"]
},
{
"pizzaName": "Margherita",
"additionalToppings": ["🍌", "🌶️", "🍍"]
}
]
}
В следующих примерах используется набор данных заказов пиццы, в котором есть заказ:
id: 778магазин: “Luigis Pizza”имя: ”Эдвард Олсон.phoneNumbers:[”(935)503-3765x4154”,”(935)12345”]Адрес: “Unit 9398 Box 2056 DPO AP 24022”изображение: null- и две пиццы, содержащиеся в элементе
pizzas:
[
{
"pizzaName": "Салями",
"additionalToppings": ["🥓", "🌶️"]
},
{
"pizzaName": "Margherita",
"additionalToppings": ["🍌", "🌶️", "🍍"]
}
]
Его можно воссоздать с помощью следующего скрипта:
создать таблицу test(id serial primary key, json_data json);
insert into test(json_data) values (
'{
"id": 778,
"shop": "Luigis Pizza",
"name": "Эдвард Олсон",
"phoneNumbers":
["(935)503-3765x4154","(935)12345"],
"address": "Unit 9398 Box 2056 DPO AP 24022",
"image": null,
"pizzas": [
{
"pizzaName": "Салями",
"additionalToppings": ["🥓", "🌶️"]
},
{
"pizzaName": "Margherita",
"additionalToppings": ["🍌", "🌶️", "🍍"]
}
]
}');
Табуляция JSON-документа с помощью функции JSON_TABLE.
Чтобы получить один или несколько JSON-документов в виде столбцов и строк, можно воспользоваться функцией JSON_TABLE. Чтобы получить список пицц и их первых дополнительных начинок из приведенного выше документа в виде таблицы, вы можете:
select tbl.* from
test,
JSON_TABLE(
json_data,
'$.pizzas[*]'
COLUMNS (
pizzaName VARCHAR(100) PATH '$.pizzaName',
additionalToppings VARCHAR(100) PATH '$.additionalToppings[0]'
)
) tbl;
Где
json_data- столбец JSON'$.pizzas[*]'генерирует строку для каждой пиццы в массивеpizzas.pizzaName VARCHAR(100) PATH '$.pizzaName'извлекает полеpizzaName.additionalToppings VARCHAR(100) PATH '$.additionalToppings[0]'извлекает первый элемент ([0]) массиваadditionalToppings.
Результат
+------------+--------------------+
| pizzaName | additionalToppings |
+------------+--------------------+
| Салями | 🥓 |
| Маргерита | 🍌 |
+------------+--------------------+
Просмотрите все примеры использования JSON MySQL, перечисленные на главной странице