oracle存储过程解析JSON

oracle存储过程解析JSON,第1张

Oracle 12102版本有一个新功能就是可以存储、查询、索引JSON数据格式,而且也实现了使用SQL语句来解析JSON,非常方便。JSON数据在数据库中以VARCHAR2, CLOB或者BLOB进行存储。Oracle建议用户在插入JSON数据之前,使用is_json来验证输入JSON数据的正确性。另外,Oracle也提供了相关的函数:

Functions:json_value, json_query, json_table

Conditions:json_exists, is json, is not json, json_textcontains

通过C#的adonet连接数据库,把查询结果序列化为json字符串,然后通过IO把json字符串写入本地的文本文件,在通过ftp把刚刚生成的文本文件上传到19216812/Test即可。

解决办法是在使用json_encode之前把字符用函数urlencode()处理一下,然后再json_encode,输出结果的时候在用函数urldecode()转回来。具体如下:

//urlencode处理

function json_array($obj) {

    foreach($obj as $key => $value) {

        if(is_array($obj[$key])) {

            $obj[$key] = json_array($obj[$key]);

        }else{

            $obj[$key] = urlencode($value);

        }

    }

    return $obj;

}

//urldecode解密转换为中文字符

function _json($obj) {

    return urldecode(json_encode(json_array($obj)));

}

echo _json($json);//$json为你要输出的json数组

此处递归调用是为了处理多维数组······

给你个思路吧,既然你能问出这种问题应该是有了思路就会自己做的人,就不帮你写代码了。

首先,你确定这个表的所有字段中没有二进制内容,如果没有的话,下面这个思路你可以试试,但是如果有的话估计就需要对二进制进行特别的处理了,如果你有的话再追问吧。

思路开始:

1如果你是对一张确定的表(提前已经知道表结构)进行这样的处理,那就查询出来一条记录,通过Mysql的字符串拼接函数CONCAT,按照JSON格式,慢慢的拼一个字符串,最后通过select这个字符串返回这个字符串就行了。

2如果之前你并不知道,这个表的结构,甚至你根本不知道自己要处理的是那张表,那么存储过程中你需要传递一个表名进来,然后查询information_schema数据库中的COLUMNS表,从而获得这个表的具体字段信息,以及各个字段的先后顺序(为后面拼接字符串使用),剩下的就跟1中描述的思路一样了。

虽然不知道你的用处是什么,不过,以我个人的经验,这种返回JSON的方式并不可取,这样会增加数据库的负担,理论上应该是将数据出来后自己在程序中拼接。

以上就是关于oracle存储过程解析JSON全部的内容,包括:oracle存储过程解析JSON、请教大神,如何在SQL SERVER下将查询结果转为Json格式上传到http://192.168.1.2/Test、PHP从Mysql查出来的数据转换成json格式中文乱码怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10633571.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存