当前位置: 首页 > 工具软件 > scala0.json > 使用案例 >

scala中的json封装

程彭祖
2023-12-01

挺费劲的,java和scala的返回方式为了统一,需要封装scala的返回方式 ,需要一个listmap,但是如果是java可以直接将listMap放入json中就可以了,但是scala不行,我们也不能将对象直接装成jsonstring,这样的话,我们在放入json后,会自动加上转义字符,可以使用listbuffer 然后转array

package flinkonkafka


import net.minidev.json.JSONObject
import net.minidev.json.parser.JSONParser
import com.alibaba.fastjson.JSON
import com.alibaba.fastjson.serializer.SerializerFeature

import scala.beans.BeanProperty
import scala.collection.mutable
import scala.collection.mutable.{ArrayBuffer, ListBuffer}
import scala.collection.JavaConversions.bufferAsJavaList
/***
 * @Author BaronND
 * @Description 从kafka上获取的json解析
 * @Date  2020/6/11
 * @Param
 * @return
 **/
class RequestJson{}
case class result(@BeanProperty code:String,@BeanProperty value:String)
object RequestJson{

  def main(args: Array[String]): Unit = {
    var resultMap = Map("CF402" -> "-0.037855187404791296", "CF327" -> "0.06558579235761422", "CF401" -> "-0.030836201749878455", "CF33" -> "-0.008973041330299265")
    var a=getArrayObj(resultMap)
    var b=getArrayObjs(resultMap)
    println(a)
    println(b)
  }


  //计算参数
  def getStringJson(s: String): mutable.Map[String, Object] = {
    val jsonobj = JSON.parseObject(s)
    val jsonParm = jsonobj.getJSONObject("parameter")
    var parameter=jsonToMap(jsonParm.toString)//请求参数封装
    JSON.toJSONString(parameter, SerializerFeature.WriteMapNullValue)

    parameter
  }


  //返回原来的json
  def callBackJson(requestJSON:String,handleTs:Long,map:Map[String,String],message:String) ={
    import com.alibaba.fastjson.JSONObject
    val js = JSON.parseObject(requestJSON)
    val jsonObj :JSONObject= new JSONObject()
    var rs=mutable.Map[String, Object]()

    var data=getArrayObj(map)
    val jsonResult = js.getJSONObject("result")
    jsonResult.put("data",data)
    jsonResult.put("message",message)
    js.put("result", jsonResult)
    js.put("handleTs",handleTs)
    js

  }

  //获取计算参数
  def getCallBackUrl(s: String):String = {
    import com.alibaba.fastjson.JSON
    val jsonobj = JSON.parseObject(s)
    val jsonParm = jsonobj.getString("callbackUrl")
    jsonParm
  }

  //对应的json转map
  def jsonToMap(svdInfo: String) = {
    val parserJson = new JSONParser()
    val jsonObj: JSONObject = parserJson.parse(svdInfo).asInstanceOf[JSONObject]
    val jsonKey = jsonObj.keySet()
    val iter = jsonKey.iterator()
    val map: mutable.HashMap[String, Object] = new mutable.HashMap[String, Object]()

    while (iter.hasNext) {
      val instance = iter.next()
      val value = jsonObj.get(instance).toString
      map.put(instance, value)
    }
    map
  }



  //将获取的map对象封装成对应的array[result] 结果:[Lflinkonkafka.result;@bd8db5a
  def getArrayObj(map:Map[String,String])={
    var ll=new ListBuffer[result]
//    val array = ArrayBuffer[result]()
    map.map(m => {
      var r= new result(m._1,m._2)
//      array.add(r)
      ll.add(r)
    })
    ll.toArray
  }

  //将获取的map对象封装成对应的array[result]:结果:ArrayBuffer(result(CF402,-0.037855187404791296), result(CF327,0.06558579235761422))
  def getArrayObjs(map:Map[String,String])={
        val array = ArrayBuffer[result]()
    map.map(m => {
      var r= new result(m._1,m._2)
            array.add(r)
    })
    array
  }
}

 

 类似资料: