2020-12-22笔记--scala动态解析json数据【特定场景】

1 篇文章 0 订阅
1 篇文章 0 订阅

一、背景

            昨晚接了一个需求,从kafka里读数据,解析json,然后将json转成相应的格式。【这还不简单,分分钟搞定,然后就有了下面的难点,吼吼吼吼】

二、难点

            今天看了一眼数据发现,json数据居然有不确定数量的URL,这咋搞?

数据格式如下:

{"text": "你"}
{"text": "你","url1":"https://nnihl"}
{"text": "你","url1":"https://nnihl","url2":"https://nnihl"}
{"text": "你","url1":"https://nnihl","url2":"https://nnihl","url3":"https://nnihl"}

数据格式解释:

         (1)公共相同字段只保存了text,其他省略。

         (2)可变json的key,有的没有URL,有的有URL1,有的有URL1,URL2,有的......

三、解决方案

            分两次处理数据,第一次fastjson正常解析JSON,第二次,正则表达式,提取出URL。然后将两个合并到一起。

第一次处理:

val postInfo = JSON.parseObject(consumerRecord.value(), classOf[PostInfo])

       相关maven: 

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.74</version>
</dependency>

第二次:

import scala.util.matching.Regex    
val pattern = new Regex("(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]")
    val str: String = (pattern findAllIn info).mkString("#")

       没有maven,在scala的util包里面的。

       参考资料:https://www.runoob.com/scala/scala-regular-expressions.html

四、优化思路

             感觉这次是碰巧,碰巧可变都是URL,碰巧都是链接,可以这样搞,一旦不是这种,就不太使用。

            以后要想办法弄出来一个真正的JSON动态解析。

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值