• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

odphotoshop SQLjson对象的问题

武飞扬头像
老板,我要写光所有SQL
帮助1

1.如何获取多个json数组中嵌套的对象集合?

例如一个json就是一个界面,有多个shop;一个shop有多个product;每个product都有一个title。我们该如何获取所有shop的所有product的title呢?

odpsget_json_object()可以解决这个问题:

get_json_object(json,'$.shop[*].product[*].title')

但上述代码返回的是一个数组型的字符串[xxx,xxx,xxx]。这就需要探讨第二个问题了

2.如何将json数组变成数组呢?

odps同样也提供了一个函数 from_json()

  1.  
    from_json(
  2.  
    get_json_object(json,'$.shop[*].product[*].title'),
  3.  
    'array<string>') -- 变换json格式变成数组形式

通过上述代码可以将返回的数组型字符串变成字符串类型数组后面可以再用lateral view展开。

但是这会有个问题,如果该json数组里只有一个对象,则会无法解析!按理来说数组可以仅仅只拥有一个元素,这是因为它在识别json数组时,如果只有一个数组元素,则会去掉json数组外层的中括号 '[]',导致from_json函数解析失效。

那我们正常来说就是存在着json数组里有不确定个的元素,怎么解决这个解析失效的问题呢?可以试试以下的代码:

  1.  
    from_json(
  2.  
    concat('[',
  3.  
    trim(
  4.  
    get_json_object(note,'$.images_list[*]')
  5.  
    ,'[]') -- 统一形式,去掉字符串两边括号,有些json数组中就一个对象,解析出来的字符串缺少'[]',导致from_json函数无法解析
  6.  
    ,']') -- 再统一格式将括号'[]'加回来
  7.  
    ,'array<string>') -- 变换json格式变成数组形式)
  8.  
    as images_list

先解析出来json对象,再统一去除中括号,然后再将中括号添回来,最后通过from_json函数进行转换,这样我们就可以统筹所有的情况了!

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfkejch
系列文章
更多 icon
同类精品
更多 icon
继续加载