JSON_ARRAY_T

JSON_ARRAY_T是JSON_ELEMENT_T的子类型,对应json类型中的数组结构。

JSON_ARRAY_T对象类型包含的子程序如下:

构造函数

CONSTRUCTOR FUNCTION JSON_ARRAY_T RETURN SELF AS RESULT
STATIC FUNCTION parse(json VARCHAR2) RETURN JSON_ARRAY_T
STATIC FUNCTION parse(json CLOB) RETURN JSON_ARRAY_T
STATIC FUNCTION parse(json BLOB) RETURN JSON_ARRAY_T
CONSTRUCTOR FUNCTION JSON_ARRAY_T(jsn VARCHAR2) RETURN SELF AS RESULT
CONSTRUCTOR FUNCTION JSON_ARRAY_T(jsn CLOB) RETURN SELF AS RESULT
CONSTRUCTOR FUNCTION JSON_ARRAY_T(jsn BLOB) RETURN SELF AS RESULT
CONSTRUCTOR FUNCTION JSON_ARRAY_T(e JSON_ELEMENT_T) RETURN SELF AS RESULT
  • 构造函数JSON_ARRAY_T可以构造一个空的JSON_ARRAY_T实例。
  • 如果构造函数的输入不满足对应的json数组有效值,则会报错。

GET子程序

MEMBER FUNCTION get(pos NUMBER) RETURN JSON_ELEMENT_T
MEMBER FUNCTION get_String(pos NUMBER) RETURN VARCHAR2
MEMBER FUNCTION get_Number(pos NUMBER) RETURN NUMBER
MEMBER FUNCTION get_Boolean(pos NUMBER) RETURN BOOLEAN
MEMBER FUNCTION get_Clob(pos NUMBER) RETURN CLOB
MEMBER FUNCTION get_Blob(pos NUMBER) RETURN BLOB
MEMBER FUNCTION get_Object(pos NUMBER) RETURN JSON_OBJECT_T
MEMBER FUNCTION get_Array(pos NUMBER) RETURN JSON_ARRAY_T
MEMBER PROCEDURE get_Clob(key NUMBER, c IN OUT CLOB)
MEMBER PROCEDURE get_Blob(key NUMBER, c IN OUT BLOB)

GET函数和过程根据输入的数组下标pos找到json数组中对应的值并转换为对应的类型。

SET过程

MEMBER PROCEDURE put(pos NUMBER, value JSON_ELEMENT_T, overwrite BOOLEAN DEFAULT FALSE)
MEMBER PROCEDURE put(pos NUMBER, value VARCHAR2, overwrite BOOLEAN DEFAULT FALSE)
MEMBER PROCEDURE put(pos NUMBER, value NUMBER, overwrite BOOLEAN DEFAULT FALSE)
MEMBER PROCEDURE put(pos NUMBER, value BOOLEAN, overwrite BOOLEAN DEFAULT FALSE)
MEMBER PROCEDURE put_Null(pos NUMBER, overwrite BOOLEAN DEFAULT FALSE)

put过程将数组中下标pos位置设置为指定值。如果pos不存在则报错。如果overwrite为true则替换pos位置的值,如果为false则在该位置后插入指定值。

MEMBER PROCEDURE append(value JSON_ELEMENT_T)
MEMBER PROCEDURE append(value VARCHAR2)
MEMBER PROCEDURE append(value NUMBER)
MEMBER PROCEDURE append(value BOOLEAN)
MEMBER PROCEDURE append_Null

append过程在数组的末端添加新的值,如果数组为空则将其构造为长度为1、值为value的数组。

内省函数

MEMBER FUNCTION get_Type(pos NUMBER) RETURN VARCHAR2

get_Type函数返回数组中pos位置对应值的类型,可以为数组、对象、标量。

修改过程

MEMBER PROCEDURE remove(pos NUMBER)

remove过程将数组中pos位置的元素删除,如果该位置不存在则忽略。

克隆函数

MEMBER FUNCTION clone RETURN JSON_ARRAY_T

克隆函数返回该数组的拷贝。

示例

create or replace procedure proc1 as
	ja json_array_t;
	je json_element_t;
begin
	--json_array_t()
	ja:=json_array_t();
	dbms_output.put_line(ja.is_Null);
	--array为null时append(json_element_t)
	je:=json_element_t('"abc"');
	ja.append(je);
	dbms_output.put_line(ja.to_String);
	--append_Null,is_Null
	ja:=json_array_t();
	ja.append_Null;
	dbms_output.put_line(ja.is_Null);
	dbms_output.put_line(ja.to_String);

	--get_Size
	ja:=json_array_t('[1,2,3,4]');
	dbms_output.put_line(ja.get_Size);
end;
/
exec proc1;
t
["abc"]
t
4
drop procedure proc1;

--get_Type
create or replace procedure proc1 as
	ja json_array_t;
	str varchar2(50);
begin
	ja:=json_array_t('[1,2,[1,2],null,true,"sdsd",{"a":"xyz","b":"abc"}]');
	str:=ja.get_Type(0);--SCALAR
	dbms_output.put_line(str);
	str:=ja.get_Type(2);--array
	dbms_output.put_line(str);
	str:=ja.get_Type('3');--SCALAR
	dbms_output.put_line(str);
	str:=ja.get_Type('4');--SCALAR

	dbms_output.put_line(str);
	str:=ja.get_Type(5);--SCALAR
	dbms_output.put_line(str);
	str:=ja.get_Type('6');--object
	dbms_output.put_line(str);
end;
/
exec proc1;
SCALAR
ARRAY
SCALAR
SCALAR
SCALAR
OBJECT
drop procedure proc1;