**
實作步驟,
**
1.new Java Bean :
2.通過net.sf.json工具的JSONObject方法解析輸入JSON,強轉為Map
- 通過 将map内容拷貝到Bean對象
- 建立子屬性清單,用于存儲子對象
- 從map中擷取嵌套資料,并轉換為map
- 将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 設定給之前的執行個體
**
完整示例:
**
- 實體類:
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)
}
}