Java JSON 处理技术:Jackson

6 篇文章 0 订阅

Jackson 处理 JSON

Java 常用的 JSON 处理库包括 Gson、Json-lib、Jackson 等,Jackson 相对来说处理速度更快,拓展功能更加强大;

Jackson 提供了以下2种 JSON 解析器:
  • ObjectMapper:把 JSON 解析到 POJO 中,或者解析到一个 Jackson 指定的树形结构中;
  • Jackson JsonParser:一种 pull 式的解析器,每次解析一组 JSON 数据,有助于解决大数据量 JSON 文本的内存开销问题;
Jackson 提供了以下2种 JSON 生成器:
  • ObjectMapper:将 POJO 或 Jackson 指定的树形结构解析为 JSON ;
  • Jackson JsonGenerator:每次生成一组 JSON 数据;

使用 Jackson 库需要导入以下依赖:
com.fasterxml.jackson.core:jackson-core(基础依赖)
com.fasterxml.jackson.core:jackson-databind(数据绑定依赖)
com.fasterxml.jackson.core:jackson-annotations(注解解析依赖)


以下通过一个简单的例子来演示 Jackson 的使用:

POJO 类的标注(使用注解)

Jackson 支持使用注解来对 POJO 属性的转化行为进行标注,以下是常用的 Jackson 注解:
@JsonProperty属性别名标注,作用于 字段
@JsonIgnore
忽略属性,作用于 字段
@JsonFormat属性格式化,作用与 字段
以下是示例的2个POJO的标注:
User
 
import com.fasterxml.jackson.annotation.*;
public class User implements Serializable{
    @JsonProperty("id")
    private int userId;
    @JsonProperty("name")
    private String userName;
    @JsonProperty("city")
    private String userCity;
    @JsonIgnore
    private String userDescription;
    @JsonProperty("logs")
    private List<LoginLog> logs;
    //省略 getter and setter
}
LoginLog
 
import com.fasterxml.jackson.annotation.*;
public class LoginLog implements Serializable{
    @JsonProperty("id")
    private int logId;
    @JsonProperty("ip")
    private String loginIp;
    @JsonProperty("date")
    @JsonFormat(pattern="yyyy-MM-dd")
    private Date loginInDate;
   //省略 getter and setter
}

将 POJO 转化为 JSON

 
//构建 POJO
User user = getUser();
//创建ObjectMapper
ObjectMapper mapper = new ObjectMapper();
//输出到内存
String jsonStr = mapper.writeValueAsString(user);
log.debug(jsonStr);
//输出到文件:以紧凑型JSON格式输出
mapper.writeValue(new PrintWriter("./jacksonSample.json","UTF-8"),user);
//输出到文件:以良好的JSON格式输出
ObjectWriter out = mapper.writerWithDefaultPrettyPrinter();
out.writeValue(new PrintWriter("./jacksonPrettySample.json","UTF-8"),user);

将 JSON 转化为 POJO

 
String jsonStr = .....;
//创建 ObjectMapper
ObjectMapper mapper = new ObjectMapper();
//从内存中读取JSON串
User user1 = mapper.readValue(jsonStr,User.class);
//从文件中读取JSON串
User user2 = mapper.readValue(new InputStreamReader(new FileInputStream("./jacksonSample.json"),"UTF-8"),User.class);

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值