`
神仙公社
  • 浏览: 9104 次
社区版块
存档分类
最新评论

存储json值字段的解析

阅读更多

数据库的clob字段存储json串 ,比如 {"PS-SB_PSNL":"450","PS-SB_PSXL":"85","PS-SB_GL":"250"}

定义2个函数,使用函数解析表中的存储json值的字段

使用fn_parsejson(json值,'key')获得值

 

CREATE OR REPLACE FUNCTION fn_split(p_str       IN VARCHAR2,

                                     p_delimiter IN VARCHAR2)

   RETURN ty_tbl_str_split IS

   j         INT := 0;

   i         INT := 1;

   len       INT := 0;

   len1      INT := 0;

   str       VARCHAR2(4000);

   str_split ty_tbl_str_split := ty_tbl_str_split();

 BEGIN

   len  := LENGTH(p_str);

   len1 := LENGTH(p_delimiter);

 

 

  WHILE j < len LOOP

     j := INSTR(p_str, p_delimiter, i);

 

 

    IF j = 0 THEN

       j   := len;

       str := SUBSTR(p_str, i);

       str_split.EXTEND;

       str_split(str_split.COUNT) := ty_row_str_split(strValue => str);

 

 

      IF i >= len THEN

         EXIT;

       END IF;

     ELSE

       str := SUBSTR(p_str, i, j - i);

       i   := j + len1;

       str_split.EXTEND;

       str_split(str_split.COUNT) := ty_row_str_split(strValue => str);

     END IF;

   END LOOP;

 

 

  RETURN str_split;

 

 END fn_split;

 

 

 

CREATE OR REPLACE FUNCTION fn_parsejson(p_jsonstr varchar2,

                                             p_key varchar2) RETURN VARCHAR2

 IS

   rtnVal VARCHAR2(200);

   i NUMBER(2);

   jsonkey VARCHAR2(200);

   jsonvalue VARCHAR2(200);

   json VARCHAR2(1000);

 BEGIN

   IF p_jsonstr IS NOT NULL THEN

      json := REPLACE(p_jsonstr,'{','') ;

      json := REPLACE(json,'}','') ;

      json := replace(json,'"','') ;

      FOR temprow IN(SELECT strvalue AS VALUE FROM TABLE(fn_split(json, ','))) LOOP

         IF temprow.VALUE IS NOT NULL THEN

            i := 0;

            jsonkey := '';

            jsonvalue := '';

            FOR tem2 IN(SELECT strvalue AS VALUE FROM TABLE(fn_split(temprow.value, ':'))) LOOP

                IF i = 0 THEN

                   jsonkey := tem2.VALUE;

                END IF;

                IF i = 1 THEN

                   jsonvalue := tem2.VALUE;

                END IF;

 

                i := i + 1;

            END LOOP;

 

            IF(jsonkey = p_key) THEN

                rtnVal := unistr(REPLACE(jsonvalue,'\u','\'));

            END if;

         END IF;

      END LOOP;

   END IF;

 

   RETURN rtnVal;

 

END fn_parsejson;

 

 

0
0
分享到:
评论

相关推荐

    C#中Json 解析类库,使用dictionary 解析未知字段的对象

    2. 定义Dictionary:创建一个`Dictionary, object&gt;`实例,这将是存储解析后JSON数据的地方。 ```csharp Dictionary, object&gt; jsonDictionary = new Dictionary, object&gt;(); ``` 3. 解析JSON字符串:使用`...

    Spark SQL操作JSON字段的小技巧

    例如,当JSON字段用于存储不定数量的键/值对时,如HTTP头部,Spark SQL未来可能支持自动检测这种情况并使用 `map` 类型来存储这些数据。这将使得查询这些动态结构的JSON数据变得更加简单。 总结来说,Spark SQL提供...

    MFC使用json11解析JSON

    在IT行业中,MFC(Microsoft Foundation Classes)是一个由微软...总的来说,通过将json11库集成到MFC项目中,你可以轻松地实现JSON数据的解析和序列化,这对于与Web服务交互或处理本地存储的JSON格式数据非常有用。

    json格式文件解析+c# mysql连接(初学者)

    登录MySQL服务器,使用SQL命令行或者图形界面工具(如MySQL Workbench)创建一个新的数据库,然后创建相应的表结构来存储从JSON文件中解析出的数据。 对于JSON文件的解析,你可以使用Newtonsoft.Json库,它提供了...

    PB解析和生成JSON

    这个转换过程会保留原始PB数据的所有字段和值,但将以键值对的形式表示,符合JSON的标准规范。 3. **JSON解析**:接收端应用接收到JSON字符串后,需要将其解析成程序可以理解的数据结构。这通常通过JSON解析库来...

    JSON、GSON解析json

    - GSON解析时,Java对象的字段类型需要与JSON数据中的类型匹配,否则会抛出异常。 以上就是关于JSON和GSON在Android开发中的基础知识和实践要点。通过理解和掌握这些内容,开发者能够有效地处理JSON数据,并利用...

    Gson解析复杂Json实例,超简单

    Gson会自动映射JSON字段到Java对象的属性,无需手动解析每个JSON节点。 ### 总结 通过使用Gson库,你可以轻松地解析复杂的JSON数据,避免了手动逐个解析JSONObject的繁琐过程。只需简单几步,就可以将JSON转换为...

    PB Json解析库

    PB是Google推出的一种高效的数据序列化协议,而JSON则是一种轻量级的数据交换格式,因其易于人阅读和编写,同时也易于机器解析和生成,被广泛应用于网络通信和数据存储。 PB(Protocol Buffers)是一种二进制编码...

    JsonSQL:用SQL语句解析JSON文件

    - JsonSQL通常不支持所有SQL标准的功能,如外键、触发器或存储过程,因为它专注于JSON数据的查询。 - JSON的灵活性可能导致数据结构不一致,这可能会影响查询效率和结果的准确性。 - 当JSON对象的键是动态的或者不...

    pb解析json

    4. 将解析得到的JSON对象映射到对应的pb对象,这可能涉及到遍历JSON对象的键值对,并根据protobuf消息结构设置相应的字段。 5. 最后,可以使用生成的pb对象进行进一步的数据处理或存储。 总的来说,"pb解析json"是...

    Pbjson字符串生成与解析

    Pbjson的工作原理是:当需要将protobuf对象转换为Json字符串时,它会遍历protobuf消息的字段,将每个字段的值转换为Json格式,并构建出对应的Json字符串。反向操作,解析Json字符串到protobuf对象时,Pbjson会解析...

    mybatis中操作json类型数据(csdn)————程序.pdf

    在MyBatis中,操作JSON类型数据涉及到对MySQL数据库中JSON字段类型的映射和转换,以便于在Java代码中能够方便地处理这些数据。这里,我们主要关注如何自定义TypeHandler来实现这一功能。 首先,MySQL引入了JSON类型...

    google-json-2.8.2解析包及源码包

    在实际应用中,Gson常用于服务器与客户端之间的数据交换,比如Web服务的API响应或请求,或者在Android应用中存储和读取本地JSON格式的数据。它的易用性和灵活性使得它成为Java开发者处理JSON数据的首选库之一。

    Oracle 获取JSON字符串对象的属性值

    在标题和描述中提到的,我们需要通过SQL语句从存储在数据库字段中的JSON字符串中提取特定属性的值。Oracle提供了多种方法来处理这种需求,其中包括基础的字符串操作函数和正则表达式功能。 首先,Oracle的`substr()...

    Unity 解析 json工具 -简单好用。不需要在声明 许多类(结构体)和对应字段。

    本篇将详细介绍一个Unity中的简单好用的JSON解析工具,它允许开发者无需预先定义大量的类或结构体来对应JSON的字段。 标题中提到的“Unity 解析 json工具”很可能是指Unity内置的JsonUtility类,这是一个简单且高效...

    解析json的gson

    JSON(JavaScript Object...总之,Gson是Java开发者处理JSON数据的强大工具,它简化了JSON与Java对象之间的转换过程,使得在各种应用场景下,如Web服务交互、数据存储和配置文件读写等,都能够更加便捷地处理JSON数据。

    HttpURLConnection获取json数据解析

    2. **发送消息**:在子线程中,解析完JSON数据后,创建一个`Message`对象,设置其`what`字段标识消息类型,`obj`字段存储数据,然后通过Handler的`sendMessage(Message msg)`方法发送。 3. **处理消息**:主线程的...

    Json.zip_JSON_java解析json

    它以文本形式存储和传递数据,易于人阅读和编写,同时也易于机器解析和生成。在Java中,处理JSON数据通常涉及到两个主要的步骤:解析JSON字符串到Java对象和将Java对象转换为JSON字符串。 在Java中,有很多库可以...

    json字符串解析工具google

    需要注意的是,Gson默认并不处理null值,如果JSON中的某个字段值为null,对应的Java对象字段也会是null。如果需要保留null值,可以使用`GsonBuilder`设置`serializeNulls()`。 总结来说,Google的Gson库是Java开发...

    复杂的JSON解析

    GSON是Google开发的一个Java库,用于将Java对象转换为JSON字符串,以及将JSON数据转换回等效的Java对象,从而简化了JSON解析和序列化的过程。 在处理复杂的JSON数据时,GSON的强大功能得以体现。JSON结构通常包括...

Global site tag (gtag.js) - Google Analytics