数组JSON转换为样例类

测试数据:

{"vin": "LW433B109L1021956","receiveTime": 1655777399240,"signals": [{"sigName": "BMS_SensorTemp1","sigVal": 0,"collectTime": 1655777397224,"validStatus": 1},{"sigName": "BMS_SensorTemp2","sigVal": 0,"collectTime": 1655777397224,"validStatus": 1},{"sigName": "BMS_SensorTemp3","sigVal": 0,"collectTime": 1655777397224,"validStatus": 1},{"sigName": "BMS_SensorTemp4","sigVal": 0,"collectTime": 1655777397224,"validStatus": 1}],"location": null}

代码:

 signalSourceDs.flatMap(new FlatMapFunction[String,SignalInputBean] {
      override def flatMap(value: String, out: Collector[SignalInputBean]): Unit = {
        val valueObj: JSONObject = JSON.parseObject(value)
        val vin: String = valueObj.getString("vin")
        var sigName: String = ""
        var sigVal: Double = 0D
        var collectTime: Long = 0L
        var validStatus: String = ""
        val signalsArr = valueObj.getJSONArray("signals")
        if(signalsArr != null&&signalsArr.size()>0){
          for (i<-0 until signalsArr.size()){
            val signalObj: JSONObject = signalsArr.getJSONObject(i)
            signalObj.put("vin",vin)
            sigName = signalObj.getString("sigName")
            sigVal = signalObj.getDoubleValue("sigVal")
            collectTime = signalObj.getLong("collectTime")
            validStatus = signalObj.getString("validStatus")
            out.collect(SignalInputBean(vin,sigName,sigVal,collectTime,validStatus))
          }
        }
      }
    }).print()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值