首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON - PL/SQL ORA-30625:不允许对NULL自身参数执行方法调度

JSON - PL/SQL ORA-30625:不允许对NULL自身参数执行方法调度
EN

Stack Overflow用户
提问于 2020-11-11 17:13:51
回答 1查看 189关注 0票数 0

示例JSON:

代码语言:javascript
复制
[
  {
    "term-id": "BA000000",
    "bank-id": "111",
    "location": "Poslovalnica banke",
    "address": "Cankarjeva ulica 2",
    "city": "Ljubljana",
    "post-code": "1000",
    "printer": "true",
    "deposit": "false",
    "accessible": "true",
    "cards": "DECPVR",
    "special-payments": "false",
    "BNA": "false",
    "transaction-receipt": "true",
    "latitude": 46.051671,
    "longitude": 14.505122
  }
]

我正在尝试使用pljson:

代码语言:javascript
复制
declare
  w_req t_http_request := t_http_request();
  w_res t_http_response;
  w_vrni clob;
  w_json pljson;
  w_jsonValue pljson_value;
  w_jsonList pljson_list;
  w_test varchar2(100);
begin
  w_req.url := 'https://api.bankart.si/psd2/hub/v1/' || 'ATMList';
  w_req.add_header('x-ibm-client-id', 'client-id');
  w_res := https_client.doGet (w_req, 'DB');
  w_vrni := hibis_util.convertBlobToClob(w_res.content_blob,'AL32UTF8');
  
  w_jsonList := pljson_list(w_vrni);
  if w_jsonList is not null and w_jsonList.count > 0 then
    for i in 1..w_jsonList.count loop
      w_json := pljson(w_jsonList.get(i));
      w_jsonValue := w_json.get('term-id');
      w_test := w_jsonValue.get_string;
      dopl(w_test);
    end loop;
  end if;
end;

我可以从这个JSON中提取位置或地址值,但当我想要提取元素term-id或bank-id时,我得到错误PL/SQL ORA-30625:不允许对NULL SELF参数执行方法调度。也许是因为"-“符号之间的关系?

有谁有什么想法吗?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-11-13 01:16:27

我觉得你把事情搞得太复杂了。:)尝试:

代码语言:javascript
复制
set serveroutput on
declare
   v_json pljson;
   v_test varchar2(100);
   v_jsonl pljson_list := pljson_list('[
  {
    "term-id": "BA000000",
    "bank-id": "111",
    "location": "Poslovalnica banke",
    "address": "Cankarjeva ulica 2",
    "city": "Ljubljana",
    "post-code": "1000",
    "printer": "true",
    "deposit": "false",
    "accessible": "true",
    "cards": "DECPVR",
    "special-payments": "false",
    "BNA": "false",
    "transaction-receipt": "true",
    "latitude": 46.051671,
    "longitude": 14.505122
  }
]');
begin
   for i in 1..v_jsonl.count loop
      v_json := pljson(v_jsonl.get(i));
      v_test := v_json.get('term-id').get_string;
      dbms_output.put_line(v_test);
   end loop;
end;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64783517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档