PLJSON开源库介绍(二)

    xiaoxiao2021-04-12  38

    本文来自李明子csdn博客(http://blog.csdn.net/free1985),商业转载请联系博主获得授权,非商业转载请注明出处! 5.3 对象构造 JSON和JSON_LIST对象都可以通过相应的“构造函数”构建。这些“构造函数”既接受字符串类型参数,也接受JSON_VALUE类型参数。当然,我们也可以调用无参构造函数构造“空”对象。 以下代码演示了JSON和JSON_LIST对象的构造方法。

    --对象构造示例 procedure EG_Create is --json对象 aJsonObj json; --另一个json对象 anotherJsonObj json; --json数组 aJsonArray json_list; --另一个json数组 anotherJsonArray json_list; --json值 aJsonValue json_value; begin --json对象反串行化 aJsonObj := json('{"key1":["1","2","3"],"key2":{"key2A":"a","key2B":"b"}}'); --json空对象 anotherJsonObj := json(); --json数组反串行化 aJsonArray := json_list('[5,6,7]'); --json数组空对象 anotherJsonArray := json_list(); aJsonValue := aJsonObj.get('key2'); --通过json_value构造json对象 anotherJsonObj := json(aJsonValue); aJsonValue := aJsonObj.get('key1'); --通过json_value构造json数组对象 anotherJsonArray := json_list(aJsonValue); dbms_output.put_line(aJsonObj.to_char); dbms_output.put_line(anotherJsonObj.to_char); dbms_output.put_line(aJsonArray.to_char); dbms_output.put_line(anotherJsonArray.to_char); end;

    5.4 JSON对象基本操作 对JSON对象可以使用get、put、remove等方法分别实现名值对的获取、插入和删除。示例代码如下:

    --JSON对象基本操作示例 procedure EG_BaseOperationForObj is --json对象 aJsonObj json; --json值 aJsonValue json_value; begin aJsonObj := json('{"key1":"1","key2":{"key2A":"a","key2B":"b"}}'); --可以通过get方法获取指定key的value,返回类型为json_value aJsonValue := aJsonObj.get('key1'); --可以通过get_string、get_number、get_bool等方法获取具体类型的值, --也可以使用to_char和to_clob方法 dbms_output.put_line(aJsonValue.get_string); --可以通过put方法为json对象加入名值对 aJsonObj.put('key3', 999); --可以通过print方法打印输出json对象, --{"key1":"1","key2":{"key2A":"a","key2B":"b"},"key3":999} aJsonObj.print; --可以通过remove方法从json对象删除名值对 aJsonObj.remove('key2'); --输出{"key1":"1","key3":999} aJsonObj.print; end;

    JSON对象也包含用于判断key值是否存在(exist方法)等功能的方法。

    5.5 遍历JSON对象的名值对 遍历JSON对象的名值对的方法是:

    通过get_keys方法获取键值key的集合,返回类型为json_list ;遍历key集合,获取每个key对应的值;

    注意,集合下标从1开始。示例代码如下:

    --JSON对象key的遍历 procedure EG_TraversalForObj is --json对象 aJsonObj json; --key数组 keys json_list; begin aJsonObj := json('{"key1":"1", "key2":{"key2A":"a","key2B":"b"}}'); --通过get_keys方法获取关键字集合,类型为json_list keys := aJsonObj.get_keys; --遍历关键字集合 for i in 1 .. keys.count loop dbms_output.put_line(aJsonObj.get(keys.get(i).get_string).to_char); end loop; end;

    5.6 JSON数组对象基本操作 对JSON数组对象(JSON_LIST)可以使用get、append、remove、replace等方法分别实现元素的获取、添加、删除和替换,示例代码如下:

    --JSON数组基本操作示例 procedure EG_BaseOperationForArray is --json数组 aJsonArray json_list; --json值 aJsonValue json_value; begin aJsonArray := json_list('[{"key1":"1","key2":"2"},{"key1":"a","key2":"b"}]'); --可以通过get方法获取指定索引位置的元素,返回值类型为json_value aJsonValue := aJsonArray.get(1); --输出为{"key1":"1","key2":"2"} aJsonValue.print; --可以通过append方法向json数组添加新元素 aJsonArray.append(json('{"key1":"A","key2":"B"}').to_json_value); --输出为[{"key1":"1","key2":"2"},{"key1":"a","key2":"b"}, --{"key1":"A","key2":"B"}] aJsonArray.print; --可以通过remove方法从json数组移除元素 aJsonArray.remove(2); --输出为[{"key1":"1","key2":"2"},{"key1":"A","key2":"B"}] aJsonArray.print; --可以通过replace方法替换json数组中指定位置的元素,参数类型为json_value aJsonArray.replace(1, json('{"key1":"m","key2":"n"}').to_json_value); --输出为[{"key1":"m","key2":"n"},{"key1":"A","key2":"B"}] aJsonArray.print; end;

    5.7 JSON数组的遍历 通过JSON_LIST的count方法可以获取JSON数组中的元素总数。之后便可以通过get方法传递索引遍历JSON数组。示例代码如下:

    --JSON数组的遍历示例 procedure EG_TraversalForArray is --json数组 aJsonArray json_list; begin aJsonArray := json_list('[{"key1":"1","key2":"2"}, {"key1":"a","key2":"b"}]'); --遍历数组中各元素 for i in 1 .. aJsonArray.count loop aJsonArray.get(i).print; end loop; end;

    另外,JSON_LIST还提供了head、last、tail等方法分别用于返回首元素、尾元素和非首元素;同时还提供了remove_first和remove_last方法分别用于去头和去尾。 (未完待续)

    转载请注明原文地址: https://ju.6miu.com/read-668100.html

    最新回复(0)