简体   繁体   English

在 MYSQL 中提取带有键和值的子 JSON

[英]Extract sub JSON with keys and values in MYSQL

I have a table with a JSON TYPE column like this:我有一个带有 JSON TYPE 列的表,如下所示:

id ID json_info json_info date日期
1. 1. {"Ccclaptop_model": {"value": "asus", "price": "2122"}, "laptop_ram": {"value": "6", "price": "122"}, "laptop_mouse_model": {"value": "logic", "price": "30"} , "laptop_keys_model": {"value": "USA", "price": "10"}} {“Ccclaptop_model”:{“value”:“asus”,“price”:“2122”},“laptop_ram”:{“value”:“6”,“price”:“122”},“laptop_mouse_model”:{ “价值”:“逻辑”,“价格”:“30”},“laptop_keys_model”:{“价值”:“美国”,“价格”:“10”}} 2020-02-02 2020-02-02

And I'd like to have a query that extracts a sub-JSON with his key value, like this:我想要一个查询,用他的键值提取一个子 JSON,如下所示:

id ID json_info json_info date日期
1. 1. {"laptop_mouse_model": {"value": "logic", "price": "30"} , "laptop_keys_model": {"value": "USA", "price": "10"}} {“laptop_mouse_model”:{“value”:“logic”,“price”:“30”},“laptop_keys_model”:{“value”:“USA”,“price”:“10”}} 2020-02-02 2020-02-02

I have tried JSON_EXTRACT我试过 JSON_EXTRACT

    SELECT id,
       JSON_EXTRACT(json_info, '$.laptop_mouse_model', '$.laptop_keys_model' ) AS store_id 
FROM feature_data WHERE date = '2020-02-02';

but just return a JSON array without keys, like this:但只返回一个没有键的 JSON 数组,如下所示:

id ID json_info json_info date日期
1. 1. [{"value": "logic", "price": "30"} ,{"value": "USA", "price": "10"}] [{“价值”:“逻辑”,“价格”:“30”},{“价值”:“美国”,“价格”:“10”}] 2020-02-02 2020-02-02

Does somebody know if exists a function that I could use?有人知道是否存在我可以使用的功能吗?

您可以使用JSON_OBJECT将结果组合为 json,例如:

SELECT id,JSON_OBJECT('laptop_mouse_model',JSON_EXTRACT(json_info, '$.laptop_mouse_model'),'laptop_keys_model',JSON_EXTRACT(json_info, '$.laptop_keys_model')) AS store_id FROM feature_data WHERE date = '2020-02-02';

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM