json字符串导入oracle,如何在Oracle中将JSON字符串转换为JSON

我需要在Oracle查询中将JSON字符串转换为JSON。

示例字符串:

{"1":{"qid":1,"aid":1,"a":"Yes","isdyn":0},"2":{"qid":2,"aid":7,"a":"sdfbsjkb","isdyn":1},"3":{"qid":2,"aid":7,"a":"sdfbsjkb","isdyn":1}}

然后将其存储在具有有效JSON约束的Oracle列表中。

如何在Oracle中做同样的事情,最好的方法是什么?

你读过这个吗

现在浏览此页面,谢谢分享。

Oracle本身没有任何意义。 甚至Oracle 12c也没有任何意义。 您的完整版本号是多少? 答案可能取决于此。

Oracle Database 12c企业版12.1.0.2.0版-64位

使用REPLACE删除引号前的那些反斜杠。 然后,您可以将它们插入表中并将其存储为普通JSON。

CREATE TABLE t_json (

id         INTEGER

GENERATED ALWAYS AS IDENTITY,

json_col   CLOB

CONSTRAINT ensure_json CHECK ( json_col IS JSON ) --Is a valid json

);

INSERT INTO t_json ( json_col )

SELECT replace('{"1":{"qid":1,"aid":1,"a":"Yes","isdyn":0},"2":{"qid":2,"aid":7,"a":"sdfbsjkb","isdyn":1},"3":{"qid":2,"aid":7,"a":"sdfbsjkb","isdyn":1}}'

,'"','"')

FROM dual;

1 row inserted.

访问元素

select t.json_col."1".a from t_json t;

A

----

Yes

但是,使用相同的方法,如果实际JSON中有特殊字符,如"a":"Yes\#",那么\#也需要替换为#。 我认为,当JSON对象转换为JSON字符串时,会附加每个特殊字符。 因此,逻辑将类似于replace(\ any special character,any special character)。 请提出建议。

@Tajinder:您的问题更多是关于如何转换字符串而不是转换为JSON。 这个问题回答了您原来的问题。 您可以尝试REGEXP_REPLACE( "a":"Yes\#" ,\\(["#]),\1)用字符本身替换任何后跟反冲的内容。 如果您还有更多要更换/修改的东西,请尝试提出一个单独的问题,并提供适当的详细信息。如果认为有帮助,可以接受此答案。

如果问题不清楚,我们很抱歉。 问题中给出的字符串只是一个例子。 希望现在很清楚。 我也编辑了问题。 您可以检查并提出建议。

with input as ( select

'{"1":{"qid":1,"aid":1,"a":"Yes","isdyn":0},"2":{"qid":2,"aid":7,"a":"sdfbsjkb","isdyn":1},"3":{"qid":2,"aid":7,"a":"sdfbsjkb","isdyn":1}}'

txt

from dual

)

select json_value(

'["' || txt || '"]',

'$[0]'

error on error

) json_txt

from input;

{"1":{"QID":1,"助剂":1,"A":"是","isdyn":0},"2":{"QID":2"援助":7,"一个":"sdfbsjkb","isdyn":1},"3":{"QID":2"援助":7,"一个":"sdfbsjkb","isdyn":1}}

JSON_VALUE只是为您释放了所有内容。

最好的祝福,

炖阿什顿

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值