当我使用JSON_ARRAY_APPEND()插入一个表示对象的字符串时,收到的是一个数组中的带引号的字符串值,而不是对象数组。
我需要一种方法来强制插入到数组中的值成为对象,而不是它的字符串表示。
服务器:10.2.18-玛丽亚数据库日志玛丽亚数据库服务器Linux x86_64
下面是我试图找到工作的一个例子:
set @NewArrayItem = '{"item2": "value2"}';
SELECT JSON_ARRAY_APPEND('{"SomeData": "SomeValue", "AnArray": [{"item1": "value1"}]}', '$.AnArray', @NewArrayItem ) as outval;
数组中的第二个元素($. AnArray [1])是字符串而不是对象。
我期待:
{"SomeData": "SomeValue", "AnArray": [{"item1": "value1"}, {"item2": "value2"}]}
但我实际上得到:
{"SomeData": "SomeValue", "AnArray": [{"item1": "value1"}, "{\"item2\": \"value2\"}"]}
我看到下面的代码是有效的,但是我的约束是value@NewArrayItem是来自另一个应用程序的格式正确的字符串:
SELECT JSON_ARRAY_APPEND('{"SomeData": "SomeValue", "AnArray": [{"item1": "value1"}]}', '$.AnArray', JSON_OBJECT('item2','value2') ) as outval;
2条答案
按热度按时间91zkwejq1#
我使用JSON_SET、JSON_MERGE和JSON_QUERY的组合解决了这个问题:
另外,它还适用于数组不存在的情况:
还在寻找更简单的答案。
nsc4cvqm2#
我尝试这个例子