在 PLJSON oracle 中解析字符串数组
Parse array of string in PLJSON oracle
我必须使用 ORACLE dans PLJSON 模块解析 JSON 中的字符串数组。
我能够在没有数组的情况下解析数据,如 CLE、X、Y..
但是当我想获得 COLORS 或 REGROUPEMENT_COLORS 时,这个 return 我什么都没有。
有代码:
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
而不是 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;
/
(注意:objects/packages 有 pl
前缀,因为 db<>fiddle 不允许创建同义词;您应该能够删除这些前缀如果您的实现创建了适当的同义词。)
输出:
d
["d", "df"]
d
df
db<>fiddle here
我必须使用 ORACLE dans PLJSON 模块解析 JSON 中的字符串数组。 我能够在没有数组的情况下解析数据,如 CLE、X、Y.. 但是当我想获得 COLORS 或 REGROUPEMENT_COLORS 时,这个 return 我什么都没有。
有代码:
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
而不是 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;
/
(注意:objects/packages 有 pl
前缀,因为 db<>fiddle 不允许创建同义词;您应该能够删除这些前缀如果您的实现创建了适当的同义词。)
输出:
d ["d", "df"] d df
db<>fiddle here