- 浏览: 782438 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (360)
- Java (101)
- JPA/Hibernate (10)
- Spring (14)
- Flex/BlazeDS (37)
- Database (30)
- Lucene/Solr/Nutch (0)
- Maven/Ant (25)
- CXF/WebService (3)
- RPC/RMI/SOAP/WSDL (1)
- REST (6)
- TDD/BDD/JUnit (1)
- Servlet/JSP (2)
- AI/MachineLearning (3)
- Resource (1)
- 字符编码 (2)
- OOA/OOPS/UML (5)
- DesignPattern (8)
- 算法与数据结构 (11)
- Web&App Server (13)
- 并发&异步&无阻塞 (7)
- Entertainment (4)
- JavaScript/ExtJS (45)
- CodeStyle&Quality (1)
- svn/git/perforce (8)
- JSON (2)
- JavaScriptTesting (4)
- Others (6)
- RegularExpression (2)
- Linux/Windows (12)
- Protocal (2)
- Celebrities (1)
- Interview (1)
- 计算机语言 (1)
- English (2)
- Eclipse (5)
- TimeZone/时区 (1)
- Finance (1)
- 信息安全 (1)
- JMS/MQ (2)
- XSD/XML/DTD (3)
- Android (4)
- 投资 (3)
- Distribution (3)
- Excel (1)
最新评论
-
qdujunjie:
如果把m换成具体的数字,比如4或者5,会让读者更明白
m阶B树中“阶”的含义 -
java-admin:
不错,加油,多写点文章
关于Extjs的mixins和plugin -
xiehuaidong880827:
你好,我用sencha cmd打包完本地工程后,把app.js ...
ExtJS使用Sencha Cmd合并javascript文件为一个文件 -
KIWIFLY:
lwpan 写道inverse = "true&qu ...
Hibernate中什么时候使用inverse=true -
luedipiaofeng:
good
消除IE stop running this script弹出框
原文链接:https://blog.csdn.net/liuxiao723846/article/details/42921333
new way reference
https://blog.csdn.net/z69183787/article/details/79317443
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 {
...
}
发表评论
-
sapjco3 notes
2019-03-21 14:51 1095sapjco https://support.sap.com/ ... -
使用RestTemplate发送post JSON请求
2019-01-12 17:30 4575private final String BASE_URL = ... -
使用RestTemplate发送post JSON请求
2019-01-12 17:30 3385private final String BASE_URL = ... -
Spring线程池ThreadPoolTaskExecutor
2018-08-06 09:51 1777<!-- spring thread pool ex ... -
Spring注解事物@Transactional不工作
2018-08-02 18:50 2543“In proxy mode (which is the de ... -
创建前缀索引报长度超出错误
2018-07-25 15:44 1646表结构定义如下: CREATE TABLE `sku` ( ` ... -
Mysql Varchar字符长度
2018-07-25 15:23 1297`sku_name` VARCHAR(200) NOT NUL ... -
使用 Spring RestTemplate 发送 post 请求
2018-07-23 18:49 11627注意点: 1)使用MultiValueMap设置入参,不要使 ... -
Java动态代理Dynamic Proxy
2018-07-21 16:33 726JAVA学习篇--静态代理VS动态代理 https://blo ... -
分布式实时日志分析解决方案 ELK 部署架构
2018-07-20 09:52 1141原文链接:http://www.importn ... -
为什么HashMap容量一定要为2的幂呢?
2018-07-19 10:07 1654原文链接:https://blog.csdn.net/wang ... -
为什么计算HashCode时通常选择31这个数?
2018-07-19 10:05 1330摘自http://www.importnew.com/2208 ... -
Pay special attention when modifying online running system
2017-06-23 10:25 0Never remove any properties, me ... -
Map中的Null key, Null Value
2017-06-14 10:52 1882ConcurrentHashMap的key和value都不能为 ... -
Java语法糖
2017-06-05 20:03 476Java语法糖之foreach http://www.imp ... -
Java集合相关
2017-05-24 17:55 0Java集合框架:ArrayList http://www. ... -
Java数据类型的转换:隐式(自动)转换与强制转换
2017-05-14 10:46 0http://blog.csdn.net/u011240877 ... -
分布式开放消息系统(RocketMQ)的原理与实践
2017-05-07 19:55 672分布式开放消息系统(RocketMQ)的原理与实践 http ... -
面试知识点复习(Interview knowledge review)
2017-05-07 18:39 0JVM,多线程相关知识 http://darrenzhu.it ... -
Netty
2017-05-02 20:09 422http://www.iteye.com/magazines/ ...
相关推荐
jackson工具库,支持JSON,XML格式实现java序列化反序列化操作。在XML格式进行反序列化时有一定的限制
spring boot 中jackson自定义序列化和反序列化
Jackson 有灵活的 API,可以很容易进行扩展和定制。 额外了解: Jackson 的 1.x 版本的包名是 org.codehaus.jackson , 当升级到 2.x 版本时,包名变为com.fasterxml.jackson。 Jackson 有三个核心包,分别是 ...
杰克逊-数据类型-JTS 这是库的分支,用于从com.vividsolutions.jts移植到org.locationtech.jts 杰克逊模块(Jackson Module),它使用为对象提供自定义序列化器和反序列化器注册模块要将JTS几何数据类型与Jackson...
包含org.unitsofmeasure类的自定义序列化器和反序列化器。 它是使用5.0-opower自定义版本构建的,该版本在此工件的/repo子目录中的本地Maven存储库中提供。 它是从JScience版本r65 (从2011-10-27开始)构建的,...
3. 支持多种注解配置序列化和反序列化:支持@JsonIgnore, @JsonFormat, @JsonView等多种注解配置对象与JSON的映射方式。 4. 高性能:jackson-databind基于Jackson Streaming API和基于类型的抽象序列化模式,性能优异...
Morphia/Jackson Java 8 可选示例Morphia (mongoDB) 和 Jackson (JSON) 序列化都可以用来序列化/反序列化新的 Java 8 Optional 类型。 对于 Jackson,您只需要注册 JDK8 模块。 对于 Morphia,您需要为 Optional ...
本篇文章主要介绍了java如何利用FastJSON、Gson、Jackson三种Json格式工具自定义时间序列化,具有一定的参考价值,有兴趣的可以了解一下
JSON格式数据序列化和反序列化 XML格式数据序列化和反序列化 Protobuf格式数据序列化和反序列化 JSON、XML或其他类型转换器可以随意扩展和替换 支持JSON转换框架: Fastjson, Jackson, Gson 支持JAXB形式的XML转换 ...
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序列化机制更快。 支持案例类,列表,字符串,日期,数字,布尔值和映射(当键为字符串时) 通过特征支持多态:在同一程序包中找到特征实现 使用注释自定义架构(如最小/最大大小,描述) ...
包含配置用法返回值从源头构建 视图这个库的所有功能都归结为一个自定义的 Jackson 序列化器。 用法只需像这样初始化一个标准的 Jackson ObjectMapper类: import com.fasterxml.jackson.databind.ObjectMapper ;...
仅序列化-无反序列化 代码中的序列化规范(无模式-既不编译也不生成) 紧凑的输出,与格式无关 流式序列化(感谢和 ) 不可定制的输出 注意该库可能 ...因您的特殊情况而失败 ...根据上下文和用法为您提供不一致的...
java常用映射器(b站黑马程序员瑞吉外卖代码资源) * 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象 ...可以添加自定义序列化器和反序列化器。可以将long类型映射位sting类型。
杰克逊数据类型货币 Jackson数据类型Money是一个模块,用于支持数据类型的JSON序列化和反序列化。 它填补了一个小众市场,因为它集成了JavaMoney和Jackson,因此它们可以无缝地协同工作,而无需开发人员额外的努力。...
Feb 20Spring中的自定义反序列化使用Jackson的自定义反序列化并 Sep 19 Spring Batch AWS集成Spring Batch与AWS SQS的集成,用于远程分块和分区。并 Jun 19响应式与非响应式Spring性能比较Spring MVC和Spring ...
[反序列化简单类 使用类型参数对属性进行反序列化 通过@JsonProperty支持自定义json名称 多态[反]序列化 能够添加默认值 通过@JsonSerialize / @JsonDeserialize定制的[de] serializers 支持@JsonIgnore 一...
它的插件,自定义创建者,序列化器,视图,可插入注释器等,为该映射库提供了巨大的开端,使其功能强大,性能强大。 项目文件 该项目的官方文档位于。 邮件列表 MongoDB Jackson Mapper用户邮件列表托管。 问题 ...