jackson用于java对象到json的序列化与反序列化。还支持xml格式。

jackson用于实现json与java对象的序列与反序列化。web service要实现跨机器传送对象那么就需要有一种技术能把对象转换为特定格式的信息。为了实现跨平台(比如把java对象转化为c#或c++对象),又考虑到方便人们阅读,所以基于字符串规则的转换是最理想的。json就是这样一个轻量级的数据交换格式,而jackson是一个实现该功能的很好用的框架。

1.获得

<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId> jackson-databind</artifactId><version>2.6.4</version>
</dependency>
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.6.4</version>
</dependency>

2.常用注解

@com.fasterxml.jackson.annotation.JsonPropertyOrder
指定序列化为json串时的各字段顺序
@com.fasterxml.jackson.annotation.JsonIgnoreProperties
指定序列化为json串时排除的一些字段

例子:

@JsonAutoDetect
@JsonPropertyOrder(value = {"price", "name"})
@JsonIgnoreProperties(value = {"year"})
public class Book {public String name = "Physics";public String price = "123";public String year = "2015";@GET@Produces(MediaType.APPLICATION_JSON)public Book wsBook(){return new Book();}
}

@com.fasterxml.jackson.annotation.JsonProperty
字段在序列化时只用指定的别名

3. 常用函数

com.fasterxml.jackson.databind.ObjectMapper
核心类。
com.fasterxml.jackson.databind.ObjectMapper.ObjectMapper()
ObjectMapper的构造函数,得到的对象是线程安全的,建议在程序中作为静态成员直接用。

3.1 对象与json

<T> T com.fasterxml.jackson.databind.ObjectMapper.readValue(File src, Class<T> valueType)
从文件中直接反序列化,当然,文件中是json格式的字符串。
<T> T com.fasterxml.jackson.databind.ObjectMapper.readValue(String content,Class<T> valueType)
从字符串中反序列化。
public void writeValue(File resultFile, Object value)
将对象序列化到文件中去。文件是json格式的文本文件。
String com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(Object value) 
将对象序列化成json格式的string。

3.2 泛型

<T> T com.fasterxml.jackson.databind.ObjectMapper.readValue(URL src,TypeReference   valueTypeRef) 
反序列化时指定泛型参数。这个函数很有用,如:
public static ConcurrentHashMap<String,Integer> readMapFromFile(File file) throws JsonParseException, JsonMappingException, IOException{//new an anonymous classreturn objectMapper.readValue(file, new TypeReference<ConcurrentHashMap<String,Integer>>() {});}

3.3 缩进

ObjectMapper objectMapper=new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
此时序列化后的json带缩进,方便肉眼看。

3.4 jsonNode

com.fasterxml.jackson.databind.JsonNode
json同xml类似,背后的数据结构都是树。当我们不需要反序列化,直接遍历某些节点时,就可以用JsonNode。
JsonNode com.fasterxml.jackson.databind.ObjectMapper.readTree(String content)
读取json,得到root节点。
JsonNode com.fasterxml.jackson.databind.JsonNode.get(String fieldName)
获取指定的孩子node。若不存在返回null。
String com.fasterxml.jackson.databind.JsonNode.asText()
将当前节点的内容以string格式输出。
String com.fasterxml.jackson.databind.JsonNode.asText(String defaultValue)
当指定的节点不存在时返回形参中的默认值。

4.示例

5.xml

在以上依赖的基础上添加:

<dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId><version>2.6.4</version>
</dependency>

5.1 常用类与函数

com.fasterxml.jackson.dataformat.xml.XmlMapper
它是ObjectMapper类的子类,用于处理xml。
注意mapper.enable(SerializationFeature.INDENT_OUTPUT);是不支持的。

6.指定反序列化时的实现类

如果是List接口,默认实现类是ArrayList。如果写明了LinkedList等,那么反序列化后就是LinkedList。

jackson (json、xml的序列化与反序列化)相关推荐

  1. 使用JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength属性...

    使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错.字符串的长度超过了为 maxJsonLength 属性设置的值. 解决办法是在web.config增加如下节点到& ...

  2. Json数据的序列化与反序列化的三种常用方法介绍

    以下内容是本作者从官网中看相应的教程后所做的demo,其体现了作者对相关知识点的个人理解..作者才疏学浅,难免会有理解不到位的地方..还请各位读者批判性对待...       本文主要介绍在Json数 ...

  3. Json和其序列化和反序列化

    最近经常在说Json传值,Json序列化,什么是Json?什么又是Json的序列化和反序列化? 什么是 JSON ? 大家是否知道Json的全称?-JavaScript Object Notation ...

  4. Jackson对泛型的序列化和反序列化方法汇总

    转载自:https://www.cnblogs.com/EasonJim/p/7919422.html 说明:Jackson对于简单泛型是可以正常操作的,但是如果对于太过于复杂的泛型类有时会不成功.目 ...

  5. 详解电子表格中的json数据:序列化与反序列化

    从XML到JSON 当下应用开发常见的B/S架构之下,我们会遇到很多需要进行前后端数据传输的场景.而在这个传输的过程中,数据通过何种格式传输.方式是否迅速便捷.书写方式是否简单易学,都成为了程序员在开 ...

  6. C#实现对象的Xml格式序列化及反序列化

    要序列化的对象的类: [Serializable] public class Person { private string name; public string Name { get { retu ...

  7. XML的序列化和反序列化 详细介绍

    为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...

  8. C# XML的序列化与反序列化

    主要2种方式1.BinaryFormatter  2.XmlSerializer 创建对象 [Serializable] //如果要想保存某个class中的字段,必须在class前面加个这样attri ...

  9. c 语言 json序列化,C#中json字符串的序列化和反序列化 – 万能的聪哥 – 博客园...

    今日写番茄闹钟程序,打算添加日程安排内容,使用到json格式文件的序列化和反序列化: 什么是Json ? Json[ 它是一个轻量级的数据交换格式,我们可以很简单的来读取和写它, 并且它很容易被计算机 ...

最新文章

  1. 如何在浏览器端爬取信息(只是配置的部分)----设置环境
  2. 标记一下被自己遗忘的java基础
  3. C#一种最简单实用安全的单例模式,也是线程安全的
  4. Queue(队列)-Swift实现与广度优先搜索应用
  5. Destroying Array(并查集)
  6. python中exp_python中的exp是什么
  7. Microsoft REST API指南
  8. WSL1升级到WSL2
  9. Python拷贝(深拷贝deepcopy与浅拷贝copy)
  10. mysql 重置表索引_第19期:索引设计(哈希索引数据分布与使用场景)
  11. c语言专家编程,读书笔记
  12. cad通过钢筋大样生成钢筋明细表插件_cad通过钢筋大样生成钢筋明细表插件_钢筋算量软件操作技巧汇总!!!...
  13. Cocos2d-X 3.x的具体配置详解
  14. oracle查看已经创建的同义词,创建同义词synonym
  15. X15 - 999、马克思主义基本原理概论、03709
  16. Xcode运行报错The operation couldn’t be completed.
  17. CommaFeed:仿Google Readerd的RSS阅读器
  18. 【论文翻译】联合学习对齐和翻译的神经机器翻译
  19. php.ini中文翻译-转载
  20. CodeForces 1169B、Pairs

热门文章

  1. swift_041(Swift的@noescape和@escaping)
  2. mysql slave 详细配置_进击的MysqlSlave环境搭建及配置
  3. Spring Cloud Hystrix理解与实践(一):搭建简单监控集群
  4. labview初始学习过程中遇到串口读取框红蓝色交替闪烁的处理
  5. css3 @keyframes、transform详解与实例
  6. CF1B Spreadsheets
  7. bzoj 2457 [BeiJing2011]双端队列 模拟+贪心
  8. java中Arrays的用法
  9. LeetCode Generate Parentheses
  10. solr配置-Schema.xml