gpt4 book ai didi

mysql - 如何将json字符串作为存储过程参数进行处理

转载 作者:行者123 更新时间:2023-11-29 09:27:32 46 4
gpt4 key购买 nike

我需要接收一个 json 字符串作为过程的参数,并将其解析为 json 对象。

此 json 字符串的示例:{'new_settings': [{'setting_name': 'test', 'setting_value': 'test_value'}]}

我需要获取名为“new_settings”的数组属性并迭代该数组内的对象。

这就是我现在所拥有的:

    CREATE PROCEDURE `sp_test` (IN `_settings` longtext)
BEGIN
DECLARE i INT UNSIGNED DEFAULT 0;
DECLARE count INT UNSIGNED DEFAULT 0;
DECLARE current_item LONGTEXT;

START TRANSACTION;
SET count = (JSON_LENGTH(JSON_EXTRACT(_settings, '$.new_settings')) - 1);

WHILE i < count DO
SET current_item := (_settings, CONCAT('$[', i, ']'));

INSERT INTO settings(setting_name, setting_value) VALUES (JSON_EXTRACT(current_item, '$.setting_name'), JSON_EXTRACT(current_item, '$.setting_value'));

SET i := i + 1;
END WHILE;

COMMIT;
END

但我收到以下错误:“参数 1 中的 JSON 文本在位置 3 处的函数‘json_extract’中存在语法错误”,我不明白出了什么问题。

您能提供一些见解吗?

提前谢谢您。

最佳答案

你的json全错了。

您始终应该检查 json 验证器,看看 mysql 是否可以读取您的输入。

SET @a = '{"new_settings": [{"setting_name": "test", "setting_value": "test_value"}]}';
SELECT JSON_EXTRACT(@a, '$.new_settings[0].setting_name') c1
, JSON_EXTRACT(@a, '$.new_settings[0].setting_value') c2;

会给你

c1      c2
test test_value

你从哪里得到你的 json 字符串?

关于mysql - 如何将json字符串作为存储过程参数进行处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59323343/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com