使用BeanUtils.populate完成json对象复制到Java Bean
**实现步骤,**1.new Java Bean :val entitys = new RedisCacheEntity2.通过net.sf.json工具的JSONObject方法解析输入JSON,强转为Mapval map: util.Map[String, Object] = JSONObject.fromObject(inputJson).asInstanceOf[util.Map[Stri
·
**
实现步骤,
**
1.new Java Bean :
val entitys = new RedisCacheEntity
2.通过net.sf.json工具的JSONObject方法解析输入JSON,强转为Map
val map: util.Map[String, Object] = JSONObject.fromObject(inputJson).asInstanceOf[util.Map[String, Object]]
- 通过 将map内容拷贝到Bean对象
BeanUtils.populate(entitys,map)
- 创建子属性列表,用于存储子对象
val lists = new util.ArrayList[ElefencesVo]()
- 从map中获取嵌套数据,并转换为map
val fences: JSONArray = map.get("elefences").asInstanceOf[JSONArray]
- 将map拷贝到bean
for(ele<- fences){
val eleFenPOJO = new ElefencesVo
val tmap = ele.asInstanceOf[util.Map[String, Object]]
BeanUtils.populate(eleFenPOJO,tmap)
lists.add(eleFenPOJO)
}
- 将bean 设置给之前的实例
entitys.setElefences(lists)
**
完整示例:
**
- 实体类:
import scala.beans.BeanProperty
class ElefencesVo {
@BeanProperty var eleId:Int =_
@BeanProperty var eleLat:Double=_
@BeanProperty var eleLng:Double =_
@BeanProperty var diffDist:Double =_
override def toString = s"ElefencesVo($eleId, $eleLat, $eleLng, $diffDist)"
}
- 实体类:
import java.util
import scala.beans.BeanProperty
import java.util.List
import scala.collection.JavaConversions._
class RedisCacheEntity{
@BeanProperty var deviceType:String=_
@BeanProperty var devieId:Int=_
@BeanProperty var reportTime:Long=_
@BeanProperty var reportMode:String=_
@BeanProperty var reportStatus:String=_
@BeanProperty var speed:Int=_
@BeanProperty var Lat:Double=_
@BeanProperty var lng:Double=_
@BeanProperty var heading:Int=_
@BeanProperty var milleage:Long=_
@BeanProperty var status:Int=_
@BeanProperty var orderId:Int=_
@BeanProperty var orderNo:String=_
@BeanProperty var orderStatus:Int=_
@BeanProperty var orderStatusName:String=_
@BeanProperty var EquipmentName:String=_
@BeanProperty var EquipmentType:Int=_
@BeanProperty var EquipmentTypeName:String=_
@BeanProperty var EquipmentStatus:Int=_
@BeanProperty var EquipmentStatusName:String=_
@BeanProperty var VechileId:Int=_
@BeanProperty var VehicleStatus:Int=_
@BeanProperty var VehicleStatusName:String=_
@BeanProperty var VehicleDriverId:Int=_
@BeanProperty var VehicleDriverName:String=_
@BeanProperty var CenterId:Int=_
@BeanProperty var CenterLat:Double=_
@BeanProperty var CenterLng:Double=_
@BeanProperty var CenterName:String=_
@BeanProperty var CenterAddress:String=_
@BeanProperty var elefences:util.List[ElefencesVo]= _
override def toString = s"RedisCacheEntity(deviceType=$deviceType, devieId=$devieId, reportTime=$reportTime, reportMode=$reportMode, reportStatus=$reportStatus, speed=$speed, Lat=$Lat, lng=$lng, heading=$heading, milleage=$milleage, status=$status, orderId=$orderId, orderNo=$orderNo, orderStatus=$orderStatus, orderStatusName=$orderStatusName, EquipmentName=$EquipmentName, EquipmentType=$EquipmentType, EquipmentTypeName=$EquipmentTypeName, EquipmentStatus=$EquipmentStatus, EquipmentStatusName=$EquipmentStatusName, VechileId=$VechileId, VehicleStatus=$VehicleStatus, VehicleStatusName=$VehicleStatusName, VehicleDriverId=$VehicleDriverId, VehicleDriverName=$VehicleDriverName, CenterId=$CenterId, CenterLat=$CenterLat, CenterLng=$CenterLng, CenterName=$CenterName, CenterAddress=$CenterAddress, elefences=$elefences)"
}
- 主类:
import java.util
import net.sf.json.{JSON, JSONArray, JSONObject}
import com.alibaba.fastjson.{JSON => aliJSON}
import net.sf.json.JSON
import org.apache.commons.beanutils.BeanUtils
import org.apache.commons.lang3.StringUtils
import test.beans.{ElefencesVo, RedisCacheEntity, redisCacheEntitys, redisCacheEntitys2}
import scala.collection.JavaConversions._
object MethodTest {
def netSfJson(inpntJson:String):RedisCacheEntity={
**val entitys = new RedisCacheEntity**
val map: util.Map[String, Object] = JSONObject.fromObject(inputJson).asInstanceOf[util.Map[String, Object]]
BeanUtils.populate(entitys,map)
println(s" copy map to bean is :$entitys")
val lists = new util.ArrayList[ElefencesVo]()
val fences: JSONArray = map.get("elefences").asInstanceOf[JSONArray]
for(ele<- fences){
val eleFenPOJO = new ElefencesVo
val tmap = ele.asInstanceOf[util.Map[String, Object]]
BeanUtils.populate(eleFenPOJO,tmap)
lists.add(eleFenPOJO)
}
entitys.setElefences(lists)
println(entitys)
entitys
}
def aliFastJson(inputJson: String):RedisCacheEntity={
val entitys = aliJSON.parseObject(inputJson, classOf[RedisCacheEntity])
println(entitys)
entitys
}
def main(args: Array[String]): Unit = {
}
// var orderStatus:String = _
//
// println(StringUtils.isEmpty(orderStatus))
//
// var number:Int= -1
// println(number.equals(-1))
//
// println(null.equals("未发车"))
println(System.currentTimeMillis())
// val inputJosn:String ="{\n\t\"deviceType\": \"OBD\",\n\t\"devieId\": 3,\n\t\"reportTime\": 1610979802256,\n\t\"reportMode\": 3,\n\t\"reportStatus\": \"拐点上传\",\n\t\"speed\": 30,\n\t\"Lat\": 20.23532532,\n\t\"lng\": 120.2353252,\n\t\"heading\": 182,\n\t\"milleage\": 2093,\n\t\"status\": 3,\n\t\"orderNo\": \"00402345\",\n\t\"orderId\": 234,\n\t\"orderStatus\": 3,\n\t\"orderStatusName\": \"返程\",\n\t\"EquipmentName\": \"SIM\",\n\t\"EquipmentType\": 2,\n\t\"EquipmentTypeName\": \"small card\",\n\t\"EquipmentStatus\": 2,\n\t\"EquipmentStatusName\": \"翻转\",\n\t\"VechileId\": 3,\n\t\"VehicleStatus\": 3,\n\t\"VehicleStatusName\": \"超速\",\n\t\"VehicleDriverId\": 1008,\n\t\"VehicleDriverName\": \"peter\",\n\t\"CenterId\": 110,\n\t\"CenterLat\": 30.235325,\n\t\"CenterLng\": 132.23525,\n\t\"CenterName\": \"CDT\",\n\t\"CenterAddress\": \"江苏省苏州市供应业园区108号\"\n}"
val inputJson = "{\n\t\"deviceType\": \"OBD\",\n\t\"devieId\": 3,\n\t\"reportTime\": 1610979802256,\n\t\"reportMode\": 3,\n\t\"reportStatus\": \"拐点上传\",\n\t\"speed\": 30,\n\t\"Lat\": 20.23532532,\n\t\"lng\": 120.2353252,\n\t\"heading\": 182,\n\t\"milleage\": 2093,\n\t\"status\": 3,\n\t\"orderNo\": \"00402345\",\n\t\"orderId\": 234,\n\t\"orderStatus\": 3,\n\t\"orderStatusName\": \"返程\",\n\t\"EquipmentName\": \"SIM\",\n\t\"EquipmentType\": 2,\n\t\"EquipmentTypeName\": \"small card\",\n\t\"EquipmentStatus\": 2,\n\t\"EquipmentStatusName\": \"翻转\",\n\t\"VechileId\": 3,\n\t\"VehicleStatus\": 3,\n\t\"VehicleStatusName\": \"超速\",\n\t\"VehicleDriverId\": 1008,\n\t\"VehicleDriverName\": \"peter\",\n\t\"CenterId\": 110,\n\t\"CenterLat\": 30.235325,\n\t\"CenterLng\": 132.23525,\n\t\"CenterName\": \"CDT\",\n\t\"CenterAddress\": \"江苏省苏州市供应业园区108号\",\n\t\"elefences\": [{\n\t\t\t\"eleId\": 1,\n\t\t\t\"eleLat\": 23.235325,\n\t\t\t\"eleLng\": 132.2345325,\n\t\t\t\"diffDist\": 0.23\n\t\t}, {\n\t\t\t\"eleId\": 1,\n\t\t\t\"eleLat\": 23.235325,\n\t\t\t\"eleLng\": 132.2345325,\n\t\t\t\"diffDist\": 0.23\n\t\t},\n\t\t{\n\t\t\t\"eleId\": 1,\n\t\t\t\"eleLat\": 23.235325,\n\t\t\t\"eleLng\": 132.2345325,\n\t\t\t\"diffDist\": 0.23\n\t\t}\n\t]\n}"
// val inputJson = "{\n\t\"deviceType\": \"OBD\",\n\t\"devieId\": 3,\n\t\"reportTime\": 1610979802256,\n\t\"reportMode\": 3,\n\t\"reportStatus\": \"拐点上传\",\n\t\"speed\": 30,\n\t\"Lat\": 20.23532532,\n\t\"lng\": 120.2353252,\n\t\"heading\": 182,\n\t\"milleage\": 2093,\n\t\"status\": 3,\n\t\"orderNo\": \"00402345\",\n\t\"orderId\": 234,\n\t\"orderStatus\": 3,\n\t\"orderStatusName\": \"返程\",\n\t\"EquipmentName\": \"SIM\",\n\t\"EquipmentType\": 2,\n\t\"EquipmentTypeName\": \"small card\",\n\t\"EquipmentStatus\": 2,\n\t\"EquipmentStatusName\": \"翻转\",\n\t\"VechileId\": 3,\n\t\"VehicleStatus\": 3,\n\t\"VehicleStatusName\": \"超速\",\n\t\"VehicleDriverId\": 1008,\n\t\"VehicleDriverName\": \"peter\",\n\t\"CenterId\": 110,\n\t\"CenterLat\": 30.235325,\n\t\"CenterLng\": 132.23525,\n\t\"CenterName\": \"CDT\",\n\t\"CenterAddress\": \"江苏省苏州市供应业园区108号\"\n}"
println(inputJson)
println("alibaba parsing...")
aliFastJson(inputJson)
println("netsfjosn parsing")
private val entitys: RedisCacheEntity = netSfJson(inputJson)
private val fences: util.List[ElefencesVo] = entitys.getElefences
for(ele<-fences){
println(ele.getEleId,ele.getEleLat,ele.getEleLng,ele.diffDist)
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)