scala使用Gson和FastJson解析JSON

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: kafka传过来的数据好多都是JSON格式,需要对其解析,抽取出应用需要的数据。Gson和FastJson是两个不错的解析工具,以后可能经常会使用到,记录一下,防止以后遗忘。

Maven依赖:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.5</version>
</dependency>

<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.51</version>
</dependency>

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)
})

}
}

目录
相关文章
|
4月前
|
JSON JavaScript Java
在Java中处理JSON数据:Jackson与Gson库比较
本文介绍了JSON数据交换格式及其在Java中的应用,重点探讨了两个强大的JSON处理库——Jackson和Gson。文章详细讲解了Jackson库的核心功能,包括数据绑定、流式API和树模型,并通过示例演示了如何使用Jackson进行JSON解析和生成。最后,作者分享了一些实用的代码片段和使用技巧,帮助读者更好地理解和应用这些工具。
361 0
在Java中处理JSON数据:Jackson与Gson库比较
|
4月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
105 0
|
8月前
|
JSON Java 数据格式
将JSON格式的字符串转换成List集合引入gson 的jar包
将JSON格式的字符串转换成List集合引入gson 的jar包
52 0
|
9月前
|
JSON 安全 JavaScript
Java一分钟之-JSON处理:Gson与Jackson库
本文对比介绍了Java中常用的两个JSON库Gson和Jackson。Gson以其简洁易用和自动序列化/反序列化功能受到青睐,而Jackson则以优异性能和丰富功能(如字段忽略、日期格式化)著称。文中通过代码示例展示了两者的基本用法,并讨论了常见问题及解决策略,包括时间格式处理、循环引用和类型匹配。在实际应用中,应根据性能需求、安全性和版本兼容性选择合适的库,并遵循最佳实践。
263 0
|
9月前
|
JSON Android开发 数据格式
Android框架-Google官方Gson解析,android开发实验报告总结
Android框架-Google官方Gson解析,android开发实验报告总结
|
9月前
|
JSON 数据格式
使用 Gson 将 Map、List等转换为json string
使用 Gson 将 Map、List等转换为json string
237 0
|
9月前
|
JSON fastjson 数据库
字符编码导致Rapidjson(腾讯开源的json解析库)到Fastjson(阿里开发的Java json解析库)转换失败的原因分析
最近在客户端的开发的过程中,使用到了RapidJson,公司的开发是客户端和数据库端都由不同的人进行开发,我负责的客户端的逻辑开发(使用c++),开发工具同时使用了VS2017和QT的编译环境,使用QT主要是为了客户端界面开发方便,而使用了VS环境主要是维护公司开发的数据库接口库,这个库的唯一作用就是作为一个中间桥梁,使用Rapidjson将数据库接口的json数据格式解析为结构体数据,从而在客户端界面进行展示,或者接收客户端的数据,使用Rapidjson将其转换为json数据,发送给数据库接口以保存数据使用 。不太明白的可以参考我上一篇文章说明Rapidjson的使用过程-Parse解析数组
165 0
|
9月前
|
JSON Java Android开发
Android网络和数据交互: 请解释Android中的JSON解析库,如Gson。
Android网络和数据交互: 请解释Android中的JSON解析库,如Gson。
78 0
|
9月前
|
JSON fastjson 数据格式
【各种**问题系列】FastJSON 泛型对象解析
解析 JSON,并将其转换为对应的数据结构。转换普通对象时,可以直接使用 Class 实例进行直接转换
|
1月前
|
JSON 前端开发 搜索推荐
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。

推荐镜像

更多