最近换全国医保,交易串全是json了,以前做报表很好写的sql取值 ,现在突然不知道怎么从json里面取值。研究了一个小时顺利解决
怎么在plsql里面oracle解析json字符串函数呢?步骤如下:
一, 查看当前数据库已导入的java类文件 如果没有下面的查询结果请进入第二步 select * from user_java_classes,
二 , 执行loadjava命令导入处理json所需jar文件,在此选择org。json而不选择fastjson或jackson的原因是该jar包没有外部依赖且满足功能的同时所需导入类文件较少。
把json。jar放在C盘目录下 (json。jar文件请找QQ752018766)
在CMD窗口输入(需要安装oracle客户端,否则会报错loadjava 不是内部或或外部命令)
loadjava -r -f -u h/1@192。168。8。19:1521/h C:/json。jar
若想删除,在CMD里面执行
--删除指定jar
#dropjava -r -f -u h/1@192。168。8。19:1521/h json。jar
导入json。jar成功后再次查看当前已导入的类文件如下
select * from user_java_classes
四,pl/sql里面执行以下脚本,创建java源码对象
create or replace and compile java source named "JsonUtil" as
import org。json。JSONArray;
import org。json。JSONException;
import org。json。JSONObject;
import java。lang。Integer;
public class JsonUtil {
//取json串单个节点值
public static String getValue(String jsonStr,String nodeName){
String nodeValue="";
try {
if(jsonStr==null||!jsonStr。startsWith("{")||!jsonStr。endsWith("}")){
nodeValue="";
}else{
JSONObject obj =new JSONObject(jsonStr);
nodeValue = obj。getString(nodeName);
}
} catch (JSONException e) {
nodeValue="";
}
return nodeValue;
}
//取json数组长度便于循环处理
public static Integer getArrayLength(String jsonArrayStr){
Integer length=0;
try {
if(jsonArrayStr==null||!jsonArrayStr。startsWith("[")||!jsonArrayStr。endsWith("]")){
length=0;
}else{
JSONArray jsonArr = new JSONArray(jsonArrayStr);
length=jsonArr。length();
}
} catch (JSONException e) {
length=0;
}
return length;
}
//取json数组第index个元素
public static String getArrayValue(String jsonStr,Integer index){ plsql的oracle解析json字符串函数:http://www.youerw.com/fanwen/lunwen_84143.html