解析json数组

现在在用两种json工具。

1.Gson(准确率高)

2.fastjson(性能好)

Gson用法:

Gson gson = new Gson();
String gsonString = gson.toJson(Object);//Object是一个json对象。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
下面是使用Servlet输出。resp是HttpServletResponse
byte[] jsonByte = json.toString().getBytes("UTF-8");
        resp.getOutputStream().write(jsonByte);
        resp.getOutputStream().flush();
        resp.getOutputStream().close();
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Fastjson用法:
//普通Bean
MessageBO msg = new MessageBO();
msg = JSON.parseObject(msg_str,MessageBO.class);
//使用HttpClient的post方法获取的实体信息。
String json = EntityUtils.toString(hr.getEntity(), "UTF-8");
//Bean数组
ArrayList<MessageBO> list = JSON.
parseObject(json, new TypeReference<ArrayList<MessageBO>>(){});

暂时只用到这些。



### 在 PL/SQL 中解析 JSON 数组的方法与示例代码 以下内容详细介绍了如何在 PL/SQL 中解析 JSON 数组,并提供了完整的示例代码。 #### 使用 `pljson` 库解析 JSON 数组 `pljson` 是一个用于在 Oracle PL/SQL 中处理 JSON 数据的第三方库。通过该库,可以轻松解析和操作 JSON 数组[^1]。以下是具体的实现方法: ```plsql DECLARE -- 定义 JSON 数组 l_json_array pljson_list := pljson_list.parse('[{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}]'); -- 定义变量以存储解析后的数据 l_item pljson; l_name VARCHAR2(100); l_age NUMBER; -- 循环计数器 i BINARY_INTEGER; BEGIN -- 初始化循环计数器 i := 1; -- 遍历 JSON 数组中的每个元素 WHILE i <= l_json_array.COUNT LOOP -- 获取数组中的每个对象 l_item := TREAT(l_json_array.GET(i) AS pljson); -- 提取字段值 json_ext.get_string(l_item, 'name', l_name); -- 提取 name 字段 json_ext.get_number(l_item, 'age', l_age); -- 提取 age 字段 -- 输出结果 DBMS_OUTPUT.PUT_LINE('Name: ' || l_name || ', Age: ' || l_age); -- 增加计数器 i := i + 1; END LOOP; END; ``` 上述代码展示了如何使用 `pljson_list.parse` 方法将 JSON 字符串解析为 `pljson_list` 类型的数组。然后,通过 `WHILE` 循环遍历数组中的每个元素,将其转换为 `pljson` 对象,并通过 `json_ext.get_string` 和 `json_ext.get_number` 提取字段值[^1]。 #### 处理嵌套的 JSON 数组 对于包含嵌套结构的 JSON 数组,可以使用类似的方法进行解析。以下是一个示例: ```plsql DECLARE -- 定义嵌套的 JSON 数组 l_json_array pljson_list := pljson_list.parse('[{"person": {"name": "Alice", "address": {"city": "New York"}}}, {"person": {"name": "Bob", "address": {"city": "Los Angeles"}}}]'); -- 定义变量以存储解析后的数据 l_item pljson; l_person pljson; l_city VARCHAR2(100); l_name VARCHAR2(100); -- 循环计数器 i BINARY_INTEGER; BEGIN -- 初始化循环计数器 i := 1; -- 遍历 JSON 数组中的每个元素 WHILE i <= l_json_array.COUNT LOOP -- 获取数组中的每个对象 l_item := TREAT(l_json_array.GET(i) AS pljson); -- 获取嵌套的 person 对象 json_ext.get_json(l_item, 'person', l_person); -- 提取字段值 json_ext.get_string(l_person, 'name', l_name); -- 提取 name 字段 json_ext.get_string(l_person, 'address.city', l_city); -- 提取 city 字段 -- 输出结果 DBMS_OUTPUT.PUT_LINE('Name: ' || l_name || ', City: ' || l_city); -- 增加计数器 i := i + 1; END LOOP; END; ``` 这段代码展示了如何从嵌套的 JSON 数组中提取数据。首先通过 `json_ext.get_json` 获取嵌套的 `person` 对象,然后从中提取所需的字段值[^2]。 #### 注意事项 - 确保已正确安装 `pljson` 库及其相关组件。 - 在处理复杂的 JSON 结构时,注意字段路径的正确性,避免因路径错误导致异常。 - 如果需要处理大量数据,建议优化代码逻辑以提高性能,例如限制提取的字段数量或使用索引加速查询。 ### 示例:使用原生 JSON 函数解析 JSON 数组 如果使用的是 Oracle 12c 或更高版本,可以直接使用 Oracle 提供的原生 JSON 函数来解析 JSON 数组。以下是一个示例: ```plsql DECLARE -- 定义 JSON 数组字符串 l_json_array CLOB := '[{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}]'; -- 定义变量以存储解析后的数据 l_name VARCHAR2(100); l_age NUMBER; BEGIN -- 使用 JSON_TABLE 解析 JSON 数组 FOR rec IN ( SELECT jt.name, jt.age FROM JSON_TABLE(l_json_array, '$[*]' COLUMNS ( name VARCHAR2(100) PATH '$.name', age NUMBER PATH '$.age' )) jt ) LOOP -- 输出结果 DBMS_OUTPUT.PUT_LINE('Name: ' || rec.name || ', Age: ' || rec.age); END LOOP; END; ``` 此代码使用 `JSON_TABLE` 函数将 JSON 数组解析为关系表,并通过 `FOR` 循环遍历每个记录,提取所需的字段值[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值