Oracle解析JSON字符串

这篇具有很好参考价值的文章主要介绍了Oracle解析JSON字符串。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Oracle解析JSON字符串

假设某个字段存储的JSON字符串,我们不想查出来后通过一些常见的编程语言处理(JSON.parse()或者是JSONObject.parseObject()等),想直接在数据库上处理,又该如何书写呢?

其实在ORACLE中也支持多种机制去处理JSON数据,例如有操作函数JSON_ARRAY、JSON_EXISTS、JSON_VALUES、JSON_TABLE、JSON_QUERY等可以像MongoDB一样操作JSON数据。

但是一般开发中很少使用JSON操作函数,都是像其他语言一样直接解析成JSON对象或数组灵活操作数据,例如:

DECLARE
    -- 申明一个json字符串
    V_STR NVARCHAR2(1000) := '[
    { "name": "alex", "age": 15, "high": 10, "phone": 1358226000000 },
    { "name": "jan", "age": 16, "high": 92, "phone": 1358226000000 },
    { "name": "jan", "age": 17, "high": 45, "phone": 1358226000000 },
    { "name": "alex", "age": 18, "high": 87, "phone": 1358226000000 },
    { "name": "jan", "age": 15, "high": 10, "phone": 1358226060000 },
    { "name": "alex", "age": 16, "high": 87, "phone": 1358226060000 },
    { "name": "alex", "age": 17, "high": 45, "phone": 1358226060000 },
    { "name": "jan", "age": 18, "high": 92, "phone": 1358226060000 }]';
    -- 申明一个json数组变量(相当于const v_array = [])
    V_ARRAY JSON_ARRAY_T;
    -- 申明一个json对象变量(相当于const v_object = {})
    V_OBJECT JSON_OBJECT_T;
    -- 用于接收json key集合(相当于const keyList = Object.keys())
    V_KEY_LIST JSON_KEY_LIST;
    -- 记住这几个关键字就行了,实际开发中已经够用了
BEGIN
    -- V_ARRAY := JSON_ARRAY_T(V_STR); -- 解析成json数组(这样书写也可以)
    -- 解析成json数组
    V_ARRAY := JSON_ARRAY_T.PARSE(V_STR);
    -- 遍历json数组
    FOR I IN 0 .. V_ARRAY.GET_SIZE - 1 LOOP
        -- 解析成json对象
        -- V_OBJECT := JSON_OBJECT_T.PARSE('{"A":1}'); 如果是字符串可以直接使用parse()
        V_OBJECT := JSON_OBJECT_T(V_ARRAY.GET(I));
        -- 获取 phone 属性值
        DBMS_OUTPUT.PUT_LINE('phone' || ' = ' || V_OBJECT.GET_STRING('phone'));
        -- 新增 password 属性
        V_OBJECT.PUT('password', '1');
        DBMS_OUTPUT.PUT_LINE('password' || ' = ' || V_OBJECT.GET_STRING('password'));
        -- 删除 high 属性
        V_OBJECT.REMOVE('high');
        DBMS_OUTPUT.PUT_LINE('high' || ' = ' || V_OBJECT.GET_STRING('high'));

        -- 获取json对象的 key_list
        V_KEY_LIST := V_OBJECT.GET_KEYS;
        -- 变量 key_list
        FOR KEY_INDEX IN 1 .. V_KEY_LIST.COUNT LOOP
            DBMS_OUTPUT.PUT_LINE(V_KEY_LIST(KEY_INDEX)); -- 输出 key
        END LOOP;
    END LOOP;
END;


JSON_OBJECT_TGET开头的API

Oracle解析JSON字符串,Oracle,oracle,json,数据库

JSON_ARRAY_TGET开头的API

Oracle解析JSON字符串,Oracle,oracle,json,数据库

当然两种类型的API远不止如此,用到的时候查阅一下即可。

在自定义函数上的使用示例文章来源地址https://www.toymoban.com/news/detail-570649.html

CREATE OR REPLACE FUNCTION YTGZHDB.FUN_GET_TDYT_NAME(TDYT IN NVARCHAR2) RETURN NVARCHAR2
AS
    V_NAME NVARCHAR2(100);
    V_KEY_LIST JSON_KEY_LIST;
    V_JSON JSON_OBJECT_T;
    V_TEMP NVARCHAR2(100);
    V_DIC_ID  VARCHAR2(50)  := '402886cb84ae206e0184be15c1590753'; -- 土地用途(后续变更调整即可)
    V_DIC_SQL VARCHAR2(255) := 'SELECT DI.F_NAME FROM YTGZHDB.DC_DIC_ITEM DI WHERE DI.F_VALUE = :1 AND DI.FK_DIC_ID = :2';
BEGIN
    V_JSON := JSON_OBJECT_T.PARSE(TDYT);
    V_KEY_LIST := V_JSON.GET_KEYS;
    FOR I IN 1 .. V_KEY_LIST.COUNT
    LOOP
        EXECUTE IMMEDIATE V_DIC_SQL INTO V_TEMP USING V_KEY_LIST(I), V_DIC_ID;
        V_NAME := CONCAT(V_NAME, CONCAT(V_TEMP, ','));
    END LOOP;
    RETURN SUBSTR(V_NAME, 1, (LENGTH(V_NAME) - 1));
END FUN_GET_TDYT_NAME;

到了这里,关于Oracle解析JSON字符串的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Golang校验字符串是否JSON格式方法json.Valid源码解析

    上篇文章《Golang中如何校验字符串是否为JSON格式?》主要讲解了使用json.Valid校验字符串是否JSON格式的使用方法,本文来剖析一下json.Valid方法的源码。 json.Valid方法定义: scan := newScanner() 获取一个 scanner 类型的对象,关键的是checkValid方法,checkValid源码如下: 首先调用了sc

    2023年04月26日
    浏览(43)
  • Hive 解析 JSON 字符串数据的实现方式

    在 Hive 中提供了直接解析 JSON 字符串数据的方法 get_json_object(json_txt, path) ,该方法参数解析如下: json_txt :顾名思义,就是 JSON 字符串; path :指的是匹配 JSON 字符串的格式,通过固定的语法获取 JSON 字符串中的内容。 常用的 path 参数匹配符号有四个,分别是: $ :表示获

    2024年02月05日
    浏览(50)
  • Java 解析多层嵌套json数据及json字符串与对象的相互转换

    本文主要介绍java解析多层嵌套json数据以及字符串与JSON对象之间的相互转换,包括:json字符串的取值,json对象与字符串的相互转换,字符串转化为java对象,字符串转化为javaList列表等。 提示:以下是本篇文章正文内容,下面案例可供参考 数据格式:JSON实际上就是键值对(

    2024年02月04日
    浏览(63)
  • C#2010 .NET4 解析 json 字符串

    下载Newtonsoft.Json.dll  

    2024年02月11日
    浏览(38)
  • 五分钟学会如何用java解析json字符串!

    在工作中我们常常使用json来存储和传输结构化的数据,如用户信息、配置信息等。它通常以string的方式进行传输,因此如何将string解析并得到我们想要的信息是一项必备且常用的功能。 JSON(JavaScript Object Notation)是一种轻量级的、基于文本的、与语言无关的数据交换格式,

    2024年02月11日
    浏览(43)
  • 【微信小程序】使用 JSON.parse 方法将返回的 JSON 字符串解析为对象

    在微信小程序中,你可以使用 JSON.parse 方法将返回的 JSON 字符串解析为对象。以下是实现类似功能的示例代码: 在上述代码中,我们使用 JSON.parse 方法将返回的 JSON 字符串解析为对象。然后,我们可以通过点语法或方括号语法访问解析后的对象的属性,例如 data.result 。 请注

    2024年02月15日
    浏览(52)
  • 大数据技术之Spark SQL——解析JSON字符串

    目录 一、数据准备 1)Department  2)School 3)Student 4)Teacher 5)实例化对象 结构如下: 二、加载数据 数据展示  三、日志数据加载 输出结果  sc.textFile读取数据源,并对结构化数据进行拆分           同样的,除了json格式字符串,我们也可以用类似的方法来加载日志数据。

    2024年02月04日
    浏览(46)
  • gin 解析 formData带文件和json字符串的一起的方式

    基础不好真的难受,这点问题折腾半天… 网上看到很多单独解析文件的,网上的资料确实都能找到。但是结合gin解析文件和json字符串(或其他类型的参数,但字符串最好)一起的,就不好找。 需求是前端使用 Content-Type: multipart/form-data 的形式上传文件以及需要的参数。后端

    2024年02月16日
    浏览(34)
  • Oracle——SUBSTR()截取字符串,INSTR()查找字符串

    使用语法:SUBSTR( string , start , [length]) string :需要截取的字符串。 start :  起始位置, -3 表示从倒数第三个字符开始, 从左往右 截取。 length:截取长度(默认截取到末尾)。 使用语法:INSTR( string , str , [start],[which]) string :源字符串。 str :查找的子字符串(可以

    2024年02月12日
    浏览(40)
  • jquery和php json字符串转数组对象 和 数组对象转json字符串

    要实现从对象转换为 JSON 字符串,使用 JSON.stringify( ) 方法: 要实现从 JSON 转换为对象,使用 JSON.parse() 方法: 数组变字符串 字符串变数组 json转数组   json_decode(  string $json ,  bool $assoc = false ,  int $depth = 512 ,  int $options = 0 ) $json:待解码的 json string 格式的字符串。这个函数

    2024年02月13日
    浏览(122)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包