- 浏览: 7847051 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
对于一直用gson的人来说,如果单独用jackson,真是麻烦了,但还是得小结下了:
先来看下如何自定义把某个对象序列化为json:
先是对象:
JACKSON一般的使用很容易,如;
Item myItem = new Item(1, "theItem", new User(2, "theUser"));
String serialized = new ObjectMapper().writeValueAsString(myItem);
结果为:
{
"id": 1,
"itemName": "theItem",
"owner": {
"id": 2,
"name": "theUser"
}
}
如果要输出为如下的样子,比如;
{
"id": 25,
"itemName": "FEDUfRgS",
"owner": 15
}
则要自定义了,要继承JsonSerializer类,如下:
然后
看,相当复杂,然后看有无办法简单点,其实是有的哦;方法为:
就是使用注解@JsonSerialize,然后:
接下来看如何反序列化了,
同样,要反序列化的两个pojo为:
反序列化代码为:
Item itemWithOwner = new ObjectMapper().readValue(json, Item.class);
如果要自定义反序列化,比如要反序列化的JSON为;
{
"id": 1,
"itemName": "theItem",
"owner": 2
}
则上面这样会报错:
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:
Unrecognized field "createdBy" (class org.baeldung.jackson.dtos.Item),
not marked as ignorable (3 known properties: "id", "owner", "itemName"])
at [Source: java.io.StringReader@53c7a917; line: 1, column: 43]
(through reference chain: org.baeldung.jackson.dtos.Item["createdBy"])
代码:
也可以用注解:
@JsonDeserialize(using = ItemDeserializer.class)
public class Item {
...
}
可以的,参考:http://jackyrong.iteye.com/blog/1936581
刚开始看,看不出两者的关系。。。。。
先来看下如何自定义把某个对象序列化为json:
先是对象:
public class User { public int id; public String name; } public class Item { public int id; public String itemName; public User owner; }
JACKSON一般的使用很容易,如;
Item myItem = new Item(1, "theItem", new User(2, "theUser"));
String serialized = new ObjectMapper().writeValueAsString(myItem);
结果为:
{
"id": 1,
"itemName": "theItem",
"owner": {
"id": 2,
"name": "theUser"
}
}
如果要输出为如下的样子,比如;
{
"id": 25,
"itemName": "FEDUfRgS",
"owner": 15
}
则要自定义了,要继承JsonSerializer类,如下:
public class ItemSerializer extends JsonSerializer<Item> { @Override public void serialize(Item value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { jgen.writeStartObject(); jgen.writeNumberField("id", value.id); jgen.writeStringField("itemName", value.itemName); jgen.writeNumberField("owner", value.owner.id); jgen.writeEndObject(); } }
然后
Item myItem = new Item(1, "theItem", new User(2, "theUser")); ObjectMapper mapper = new ObjectMapper(); SimpleModule module = new SimpleModule(); module.addSerializer(Item.class, new ItemSerializer()); mapper.registerModule(module); String serialized = mapper.writeValueAsString(myItem);
看,相当复杂,然后看有无办法简单点,其实是有的哦;方法为:
@JsonSerialize(using = ItemSerializer.class) public class Item { ... }
就是使用注解@JsonSerialize,然后:
Item myItem = new Item(1, "theItem", new User(2, "theUser")); String serialized = new ObjectMapper().writeValueAsString(myItem);
接下来看如何反序列化了,
同样,要反序列化的两个pojo为:
public class User { public int id; public String name; } public class Item { public int id; public String itemName; public User owner; }
反序列化代码为:
Item itemWithOwner = new ObjectMapper().readValue(json, Item.class);
如果要自定义反序列化,比如要反序列化的JSON为;
{
"id": 1,
"itemName": "theItem",
"owner": 2
}
则上面这样会报错:
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:
Unrecognized field "createdBy" (class org.baeldung.jackson.dtos.Item),
not marked as ignorable (3 known properties: "id", "owner", "itemName"])
at [Source: java.io.StringReader@53c7a917; line: 1, column: 43]
(through reference chain: org.baeldung.jackson.dtos.Item["createdBy"])
代码:
public class ItemDeserializer extends JsonDeserializer<Item> { @Override public Item deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { JsonNode node = jp.getCodec().readTree(jp); int id = (Integer) ((IntNode) node.get("id")).numberValue(); String itemName = node.get("itemName").asText(); int userId = (Integer) ((IntNode) node.get("id")).numberValue(); return new Item(id, itemName, new User(userId, null)); } } ObjectMapper mapper = new ObjectMapper(); SimpleModule module = new SimpleModule(); module.addDeserializer(Item.class, new ItemDeserializer()); mapper.registerModule(module); Item readValue = mapper.readValue(json, Item.class);
也可以用注解:
@JsonDeserialize(using = ItemDeserializer.class)
public class Item {
...
}
评论
5 楼
907121461
2014-08-08
我的 jackson jar 怎么没有registerModule这个方法呢
4 楼
liuweihug
2014-08-01
json序列化反序列化插件-json2.js 介绍和使用
http://www.suchso.com/UIweb/json2-js-stringify-parse-serializable-deserialize.html
http://www.suchso.com/UIweb/json2-js-stringify-parse-serializable-deserialize.html
3 楼
jackyrong
2014-01-17
sootv 写道
请问下jackson可以生成这种格式不,标准json格式是{key1:value1,key2:value2},而我只要value,如{value1,value2}
可以的,参考:http://jackyrong.iteye.com/blog/1936581
2 楼
sootv
2014-01-16
请问下jackson可以生成这种格式不,标准json格式是{key1:value1,key2:value2},而我只要value,如{value1,value2}
1 楼
shmily2038
2014-01-16
{ "id": 1, "itemName": "theItem", [b] "owner": { "id": 2, "name": "theUser" } [/b] } 如果要输出为如下的样子,比如; { "id": 25, "itemName": "FEDUfRgS", [b]"owner": 15 [/b] }
刚开始看,看不出两者的关系。。。。。
发表评论
-
复习:强迫线程顺序执行方式
2019-01-03 23:42 1472方法1: 三个线程,t1,t2,t3,如果一定要按顺序执行, ... -
(转)不错的前后端处理异常的方法
2019-01-02 23:16 1962前言 在 Web 开发中, 我们经常会需要处理各种异常, 这是 ... -
info q的极客时间大咖说等资料下载
2018-08-15 08:40 3408info q的极客时间大咖说等资料下载,还有不少思维导图 链 ... -
CXF 客户端超时时间设置(非Spring配置方式)
2018-07-03 22:38 2175import org.apache.cxf.endpoint. ... -
(转)synchronized关键字画像:正确打开方式
2018-06-14 09:25 443https://mp.weixin.qq.com/s/b3Sx ... -
CountDownLatch的例子
2018-06-13 14:10 627public class StatsDemo { ... -
两道面试题,带你解析Java类加载机制
2018-06-12 16:29 549https://mp.weixin.qq.com/s/YTa0 ... -
Spring中获取request的几种方法,及其线程安全性分析
2018-06-11 09:03 621https://mp.weixin.qq.com/s/KeFJ ... -
内部类小结
2018-06-06 10:25 393https://mp.weixin.qq.com/s/hErv ... -
JVM虚拟机小结1
2018-06-04 20:43 4601 jps -l //列出详细的类名和进程ID 2)jps ... -
windows下自带命令行工具查看CPU资源情况等
2018-06-04 12:53 3037微软提供了不少命令行 ... -
(收藏)深入分析Java的序列化与反序列化
2018-05-30 15:21 551https://mp.weixin.qq.com/s/T2Bn ... -
apache common包中的序列化工具
2018-05-30 09:10 1771什么是序列化 我们的 ... -
JAVA8 JVM的变化: 元空间(Metaspace)
2018-05-24 22:30 903本文将会分享至今为至我收集的关于永久代(Permanent G ... -
(转)服务器性能指标(一)——负载(Load)分析及问题排查
2018-05-21 21:03 1259原创: Hollis Hollis 负载 ... -
(转)对象复用
2018-05-20 15:27 802public class Student { priv ... -
mapreduce中入门中要注意的几点
2018-05-06 08:59 614在 mapreduce中,比如有如下的词: I love b ... -
HDFS的基本操作
2018-05-02 21:47 872-mkdir 在HDFS创建目录 ... -
一个不错的开源工具类,专门用来解析日志头部的,好用
2018-05-02 20:00 703一个不错的开源工具类,专门用来解析日志头部的,好用。 http ... -
介绍个不错的RESTFUL MOCK的工具wiremock
2018-04-27 21:02 1850介绍个不错的RESTFUL MOCK的工具wiremock,地 ...
相关推荐
jackson工具库,支持JSON,XML格式实现java序列化反序列化操作。在XML格式进行反序列化时有一定的限制
spring boot 中jackson自定义序列化和反序列化
Jackson是公司中必用的组件之一,常用的还用阿里的Fastjson,但是由于一些原因bug与漏洞是在是太多,在注重安全的公司直接被pass,还有就是谷歌的Gson(这个没用过不太了解)。 Spring MVC 的默认 json 解析器便是 ...
杰克逊-数据类型-JTS 这是库的分支,用于从com.vividsolutions.jts移植到org.locationtech.jts 杰克逊模块(Jackson Module),它使用为对象提供自定义序列化器和反序列化器注册模块要将JTS几何数据类型与Jackson...
本篇文章主要介绍了java如何利用FastJSON、Gson、Jackson三种Json格式工具自定义时间序列化,具有一定的参考价值,有兴趣的可以了解一下
3. 支持多种注解配置序列化和反序列化:支持@JsonIgnore, @JsonFormat, @JsonView等多种注解配置对象与JSON的映射方式。 4. 高性能:jackson-databind基于Jackson Streaming API和基于类型的抽象序列化模式,性能优异...
JSON格式数据序列化和反序列化 XML格式数据序列化和反序列化 Protobuf格式数据序列化和反序列化 JSON、XML或其他类型转换器可以随意扩展和替换 支持JSON转换框架: Fastjson, Jackson, Gson 支持JAXB形式的XML转换 ...
Morphia/Jackson Java 8 可选示例Morphia (mongoDB) 和 Jackson (JSON) 序列化都可以用来序列化/反序列化新的 Java 8 Optional 类型。 对于 Jackson,您只需要注册 JDK8 模块。 对于 Morphia,您需要为 Optional ...
包含org.unitsofmeasure类的自定义序列化器和反序列化器。 它是使用5.0-opower自定义版本构建的,该版本在此工件的/repo子目录中的本地Maven存储库中提供。 它是从JScience版本r65 (从2011-10-27开始)构建的,...
gwt-jackson.zip,gwt-jackson是一种基于jackson注释的gwt-json序列化/反序列化机制gwt-jackson是gwt的json解析器。它使用jackson 2.x注释自定义序列化/反序列化过程。
在某些情况下,返回的部分数据可能对使用 API 的设备没有用,或者应该对公众保持不可见,因此不应该t 通过 JSON 序列化和公开。 这个项目针对同样的问题,基于一些标准/业务逻辑,我们可以定义是否要序列化响应的...
Jsonex JSONCoder是一个轻量级的通用对象序列化/反序列化库,类似于Jackson,GSON或FastJson。 多年来,该库已在各种eBay项目中广泛使用。 它不能替代其他流行的库。 但是,它解决了一些其他替代产品无法提供或无法...
这种方法比使用json4s序列化机制更快。 支持案例类,列表,字符串,日期,数字,布尔值和映射(当键为字符串时) 通过特征支持多态:在同一程序包中找到特征实现 使用注释自定义架构(如最小/最大大小,描述) ...
Feb 20Spring中的自定义反序列化使用Jackson的自定义反序列化并 Sep 19 Spring Batch AWS集成Spring Batch与AWS SQS的集成,用于远程分块和分区。并 Jun 19响应式与非响应式Spring性能比较Spring MVC和Spring ...
仅序列化-无反序列化 代码中的序列化规范(无模式-既不编译也不生成) 紧凑的输出,与格式无关 流式序列化(感谢和 ) 不可定制的输出 注意该库可能 ...因您的特殊情况而失败 ...根据上下文和用法为您提供不一致的...
杰克逊数据类型货币 Jackson数据类型Money是一个模块,用于支持数据类型的JSON序列化和反序列化。 它填补了一个小众市场,因为它集成了JavaMoney和Jackson,因此它们可以无缝地协同工作,而无需开发人员额外的努力。...
包含配置用法返回值从源头构建 视图这个库的所有功能都归结为一个自定义的 Jackson 序列化器。 用法只需像这样初始化一个标准的 Jackson ObjectMapper类: import com.fasterxml.jackson.databind.ObjectMapper ;...
java常用映射器(b站黑马程序员瑞吉外卖代码资源) * 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象 ...可以添加自定义序列化器和反序列化器。可以将long类型映射位sting类型。
自定义JSON序列化程序和反序列化程序 28.1.4.MessageCodesResolver的信息 28.1.5.静态内容 28.1.6.欢迎页面 28.1.7.自定义Favicon 28.1.8.路径匹配和内容协商 28.1.9.ConfigurableWebBindingInitializer...
它的插件,自定义创建者,序列化器,视图,可插入注释器等,为该映射库提供了巨大的开端,使其功能强大,性能强大。 项目文件 该项目的官方文档位于。 邮件列表 MongoDB Jackson Mapper用户邮件列表托管。 问题 ...