CALL pro_device_transfer('{"name": "John", "age": 30}'); [Err] 3141 - Invalid JSON text in argument 1 to function cast_as_json: "Missing a comma or '}' after an object member." at position 11.
时间: 2023-07-19 11:26:03 浏览: 151
json出错提示
抱歉,我之前提供的代码仍然存在问题。在构造 JSON 数据时,需要使用 `JSON_OBJECT` 函数。以下是一个修正后的示例:
```mysql
CREATE PROCEDURE pro_device_transfer (IN json_data JSON)
BEGIN
DECLARE device_id INT;
DECLARE target_room_id INT;
SET device_id = JSON_EXTRACT(json_data, '$.device_id');
SET target_room_id = JSON_EXTRACT(json_data, '$.target_room_id');
-- 进行数据处理
...
-- 构造 JSON 数据
SET @result = JSON_OBJECT('result', 'success');
-- 返回 JSON 数据
SELECT CAST(@result AS JSON) AS result;
END;
```
在上面的示例中,使用 `JSON_OBJECT` 函数构造 JSON 数据,并将其赋值给变量 `@result`。然后,使用 `CAST` 函数将 `@result` 变量转换为 JSON 类型,并将其作为查询结果返回。
请注意,在构造 JSON 数据时,需要使用键和值对的形式,例如 `JSON_OBJECT('key1', 'value1', 'key2', 'value2', ...)`。如果 JSON 数据中的键名或键值包含引号或其他特殊字符,需要进行适当的转义。
阅读全文