javascript
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只是為您釋放了所有內容。
最好的祝福,
燉阿什頓
總結
以上是生活随笔為你收集整理的json字符串导入oracle,如何在Oracle中将JSON字符串转换为JSON的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux锁机制(linux 锁机制)
- 下一篇: js移除某个class_用JS添加和删除