forked from doberkofler/PLSQL-JSON
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjson_object.tps
More file actions
105 lines (94 loc) · 3.29 KB
/
json_object.tps
File metadata and controls
105 lines (94 loc) · 3.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
CREATE OR REPLACE
TYPE json_object IS OBJECT
-- $Id: json_object.tps 42847 2014-04-06 17:38:58Z doberkofler $
------------
-- OVERVIEW
--
-- Utilities to efficiently generate JSON
--
--
-----------
-- EXAMPLE
--
--
-- DECLARE
-- aNameObj json_object := json_object();
-- aEmailArray json_array := json_array();
-- aPersonObj json_object := json_object();
-- aPersonArray json_array := json_array();
--
-- -- just for debugging
-- aLob CLOB := empty_clob();
-- BEGIN
-- FOR i IN 1 .. 3 LOOP
-- aNameObj := json_object();
-- aNameObj.put('given', 'Jon');
-- aNameObj.put('last', 'Doe');
--
-- aEmailArray := json_array();
-- aEmailArray.append('jon.doe@gmail.com');
-- aEmailArray.append('j.doe@gmail.com');
--
-- aPersonObj := json_object();
-- aPersonObj.put('id', i);
-- aPersonObj.put('name', aNameObj);
-- aPersonObj.put('income', 4800 + i * 100);
-- aPersonObj.put('birthday', SYSDATE);
-- aPersonObj.put('male', TRUE);
-- aPersonObj.put('voice', aEmailArray.to_json_value());
--
-- aPersonArray.append(i);
-- aPersonArray.append(3.14);
-- aPersonArray.append(FALSE);
-- aPersonArray.append(aPersonObj);
-- END LOOP;
--
-- aPersonArray.htp();
--
-- -- just for debugging
-- dbms_lob.createtemporary(aLob, TRUE);
-- aPersonArray.to_clob(aLob);
-- dbms_output.put_line(aLob);
-- dbms_lob.freetemporary(aLob);
-- END;
-- /
--
-------------
-- RESOURCES
--
-- You must use the following modules together:
-- json_node (TYPE)
-- json_nodes (TYPE)
-- json_data (TYPE)
-- json_object (TYPE)
-- json_array (TYPE)
-- json_utils (PACKAGE)
--
--
(
nodes json_nodes, -- list of nodes
lastID NUMBER, -- id of the last node in this (not sub objects) object
-- Constructors
CONSTRUCTOR FUNCTION json_object(SELF IN OUT NOCOPY json_object) RETURN SELF AS result,
CONSTRUCTOR FUNCTION json_object(SELF IN OUT NOCOPY json_object, theData IN json_value) RETURN SELF AS result,
CONSTRUCTOR FUNCTION json_object(SELF IN OUT NOCOPY json_object, theJSONString IN CLOB) RETURN SELF AS result,
-- Member setter methods
MEMBER PROCEDURE put(SELF IN OUT NOCOPY json_object, theName IN VARCHAR2),
MEMBER PROCEDURE put(SELF IN OUT NOCOPY json_object, theName IN VARCHAR2, theValue IN VARCHAR2),
MEMBER PROCEDURE put(SELF IN OUT NOCOPY json_object, theName IN VARCHAR2, theValue IN NUMBER),
MEMBER PROCEDURE put(SELF IN OUT NOCOPY json_object, theName IN VARCHAR2, theValue IN DATE),
MEMBER PROCEDURE put(SELF IN OUT NOCOPY json_object, theName IN VARCHAR2, theValue IN BOOLEAN),
MEMBER PROCEDURE put(SELF IN OUT NOCOPY json_object, theName IN VARCHAR2, theValue IN json_object),
MEMBER PROCEDURE put(SELF IN OUT NOCOPY json_object, theName IN VARCHAR2, theValue IN json_value),
-- Member getter methods
MEMBER FUNCTION count(SELF IN json_object) RETURN NUMBER,
MEMBER FUNCTION get(SELF IN json_object, thePropertyName IN VARCHAR2) RETURN json_value,
MEMBER FUNCTION exist(SELF IN json_object, thePropertyName IN VARCHAR2) RETURN BOOLEAN,
MEMBER FUNCTION get_keys RETURN json_keys,
-- Member convertion methods
MEMBER FUNCTION to_json_value(SELF IN json_object) RETURN json_value,
-- Output methods
MEMBER PROCEDURE to_clob(SELF IN json_object, theLobBuf IN OUT NOCOPY CLOB, theEraseLob BOOLEAN DEFAULT TRUE),
MEMBER PROCEDURE htp(SELF IN json_object, theJSONP IN VARCHAR2 DEFAULT NULL)
);
/