oracle11g数据库中的json工具

本文介绍了如何在 Oracle 11g 数据库中集成和使用 JSON 工具,包括导入 org.json:json:20170516 依赖库,创建 Java 源代码工具类,定义包以及进行测试操作。同时,提供了实用的使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导入依赖库到oracle(org.json:json:20170516)

loadjava -r -f -u user/password@ip:1521/orasid json-20170516.jar

添加java source工具类

create or replace and compile java source named "JsonUtil" as
package org.jws;

import org.json.JSONObject;

public class JsonUtil {
    // 获取字符值
    public static String getStringValue(String jsonObjStr, String key) {
        try {
            JSONObject obj = new JSONObject(jsonObjStr);
            if (obj.has(key)) {
                Object value = obj.get(key);
                return value.toString();
            }
        } catch (Exception e) {

        }
        return null;
    }

    // 获取数字值
    public static Double getNumberValue(String jsonObjStr, String key) throws RuntimeException {
        try {
            JSONObject obj = new JSONObject(jsonObjStr);
            if (obj.has(key)) {
                Object value = obj.get(key);
                if (value instanceof Number) {
                    return ((Number) value).doubleValue();
                } else {
                    return Double.parseDouble(value.toString());
                }
            }
        } catch (Exception e) {

        }
        return null;
    }
}
/

定义package

create or replace package pkg_json as
  --获取字符
  function getstr
  (
    jsonstr  varchar2,
    nodename varchar2
  ) return varchar2;

  --获取数值
  function getnum
  (
    jsonstr  varchar2,
    nodename varchar2
  ) return number;
end pkg_json;
/
create or replace package body pkg_json as

  function getstr
  (
    jsonstr  varchar2,
    nodename varchar2
  ) return varchar2 as
    language java name 'org.jws.JsonUtil.getStringValue(java.lang.String,java.lang.String) return java.lang.String';

  function getnum
  (
    jsonstr  varchar2,
    nodename varchar2
  ) return number as
    language java name 'org.jws.JsonUtil.getNumberValue(java.lang.String,java.lang.String) return java.lang.Double';

end pkg_json;
/

测试

select pkg_json.getstr('{"name":"zhangsan","age":18}', 'name') strval,
       pkg_json.getnum('{"name":"zhangsan","age":18}', 'age') numval
  from dual;

tips

select * from user_java_classes a;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值