scala使用Gson和FastJson解析JSON

kafka传过来的数据好多都是JSON格式,需要对其解析,抽取出应用需要的数据。Gson和FastJson是两个不错的解析工具,以后可能经常会使用到,记录一下,防止以后遗忘。

Maven依赖:


    
        com.google.code.gson
        gson
        2.8.5
    

    
    
        com.alibaba
        fastjson
        1.2.51
    

fastjson:

import com.alibaba.fastjson._
import scala.collection.JavaConversions._
object TestFastJson {
  def main (args: Array[String]): Unit ={
    println("fastJson tests....")
    var badJsonStr="{\"employees\":\"{\"firstName\":\"三\",\"lastName\":\"张\"}\"}"
    try{
      var badJsonObject=JSON.parseObject(badJsonStr)
    }
    catch{
      //json格式不正确,报错
      case e:Exception=>println(e.getMessage)
    }
    /*测试JsonObject*/
    var jsonObjectStr="{\"firstName\":\"三\" , \"lastName\":\"张\"}"
    var jsonObject:JSONObject=JSON.parseObject(jsonObjectStr)
    println("firstName="+jsonObject.getString("firstName")+",lastName="+jsonObject.getString("lastName"))
    /*测试JsonArray*/
    var jsonArrayStr="[{\"firstName\":\"三\",\"lastName\":\"张\"},{\"firstName\":\"四\",\"lastName\":\"李\"}]"
    //生成JsonArray对象
    var jsonArray:JSONArray=JSON.parseArray(jsonArrayStr)
    //遍历JsonArray
    jsonArray.foreach(ja=>{
      //scala不能推断出ja是JsonObject,只能手动转成JsonObject
     var json=JSON.parseObject(ja.toString)
      //输出
      println("firstName="+json.getString("firstName")+",lastName="+json.getString("lastName"))
    })
  }
}

--gson

import com.google.gson._
import scala.collection.JavaConversions._
/**
 * Created by Administrator on 2018/10/21.
 */
object TestGson {
  def main(args: Array[String]) {
    println("gson tests....")
    var badJsonStr="{\"employees\":\"{\"firstName\":\"三\",\"lastName\":\"张\"}\"}"
    try{
      var badJsonObject=new JsonParser().parse(badJsonStr).getAsJsonObject
    }
    catch{
      //json格式不正确,报错
      case e:Exception=>println(e.getMessage)
    }
    /*测试JsonObject*/
    var jsonObjectStr="{\"firstName\":\"三\" , \"lastName\":\"张\"}"
    var jsonObject=new JsonParser().parse(jsonObjectStr).getAsJsonObject
    println("firstName="+jsonObject.get("firstName").getAsString+",lastName="+jsonObject.get("lastName").getAsString)
    /*测试JsonArray*/
    var jsonArrayStr="[{\"firstName\":\"三\",\"lastName\":\"张\"},{\"firstName\":\"四\",\"lastName\":\"李\"}]"
    //生成JsonArray对象
    var jsonArray=new JsonParser().parse(jsonArrayStr).getAsJsonArray
    //遍历JsonArray
    jsonArray.foreach(ja=>{
      //scala可以识别ja是JsonObject,可以直接进行解析          println("firstName="+jsonObject.get("firstName").getAsString+",lastName="+jsonObject.get("lastName").getAsString)
    })
  }
}

你可能感兴趣的:(scala)