json - 在 PLJSON oracle 中解析字符串数组
问题描述
我必须使用 ORACLE dans PLJSON 模块解析我的 JSON 中的字符串数组。我能够解析没有像 CLE、X、Y 这样的数组的数据。但是当我想获取 COLORS 或 REGROUPEMENT_COLORS 时,这不会给我任何回报。
有代码:
DECLARE
obj json := json();
obj_1 json := json();
arr json_list := json_list();
test varchar2(255);
BEGIN
obj := json('{
"DASHBOARD": {
"userUid": "",
"DATA_DASHBOARD": [
{
"CLE": "TESTTEST",
"X": "",
"Y": "",
"COL": "",
"ROW": "",
"CLASSCOLOR": "",
"COLORS": ["df","df"],
"REGROUPEMENT_ID": "",
"REGROUPEMENT_TEXT": "",
"REGROUPEMENT_CLASSCOLOR": "",
"REGROUPEMENT_X": "",
"REGROUPEMENT_Y": "",
"REGROUPEMENT_COL": "",
"REGROUPEMENT_ROW": "",
"REGROUPEMENT_COLORS": ["d","df"]
}
]
}
}');
obj_1 :=json(obj.get('DASHBOARD'));
arr := json_list(obj_1.get('DATA_DASHBOARD'));
test := json_ext.get_string(json(arr.get(1)), 'REGROUPEMENT_COLORS');
DBMS(test);
END;
谢谢 !
解决方案
REGROUPEMENT_COLORS
是一个数组,而不是一个字符串,所以json_ext.get_string()
不返回任何东西。如果你想要一个字符串,那么获取REGROUPEMENT_COLORS[1]
或REGROUPEMENT_COLORS[2]
;如果你想要数组然后使用json_ext.get_json_list
而不是json_ext.get_string
.
要输出字符串,请使用DBMS_OUTPUT.PUT_LINE
not DBMS
。
如果您正在使用,json_ext
那么您可以使用完整路径。
PL/SQL:
DECLARE
obj pljson := pljson(
'{
"DASHBOARD": {
"userUid": "",
"DATA_DASHBOARD": [
{
"CLE": "TESTTEST",
"X": "",
"Y": "",
"COL": "",
"ROW": "",
"CLASSCOLOR": "",
"COLORS": ["df","df"],
"REGROUPEMENT_ID": "",
"REGROUPEMENT_TEXT": "",
"REGROUPEMENT_CLASSCOLOR": "",
"REGROUPEMENT_X": "",
"REGROUPEMENT_Y": "",
"REGROUPEMENT_COL": "",
"REGROUPEMENT_ROW": "",
"REGROUPEMENT_COLORS": ["d","df"]
}
]
}
}'
);
test varchar2(255);
arr pljson_list;
BEGIN
test := pljson_ext.get_string( obj, 'DASHBOARD.DATA_DASHBOARD[1].REGROUPEMENT_COLORS[1]');
DBMS_OUTPUT.PUT_LINE(test);
arr := pljson_ext.get_json_list( obj, 'DASHBOARD.DATA_DASHBOARD[1].REGROUPEMENT_COLORS');
arr.print;
FOR i IN 1 .. arr.COUNT LOOP
DBMS_OUTPUT.PUT_LINE( arr.get_string(i) );
END LOOP;
END;
/
(注意:对象/包的pl
前缀为 db<>fiddle 不允许创建同义词;如果您的实现创建了适当的同义词,您应该能够删除这些前缀。)
输出:
d [“d”,“df”] d df
db<>在这里摆弄
推荐阅读
- css - 启用“overflow-y:auto”时,多选列表在 x 轴上被截断
- python - 如何使用二次回归?
- regex - 如何以未扩展的形式打印扩展的正则表达式?
- java - Canny 边缘检测未检测到 100% 水平/未旋转的线
- directory-structure - 在 Linux mint 上将手动安装的程序放在哪里
- python - 在 Python 中通过 ODBC 访问 Filemaker 18 文件中的数据
- php - openssl_decrypt 不解密用 openssl_encrypt 存储的数据
- oracle - 访问和修改通过向导创建的 APEX 19.1 按钮中的代码
- javascript - 你如何为布尔检查器编写这个 if/else 语句
- php - woocommerce 添加到购物车功能返回错误