http://jackson.codehaus.org/
lib:
jackson-core-asl-1.6.0.jar
jackson-mapper-asl-1.6.0.jar
心得:最方便的是Full Data Binding 方式,不用额外处理,但是POJO的属性名需要与JSON的变量名一一对应。对于需要做JSON变量名和POJO属性名转换的话,使用Tree Model。
Jackson提供了三种方式处理JSON
Streaming API, 基于事件处理JSON,类似StAX API。性能最好,其它两种方法都是建立在它之上
Tree Model 提供了内建文档树方式来展现JSON,类似XML DOM。最灵活。
Data Binding 使用注释或者属性访问器JSON与POJOs之间转换。最方便。
以下是官方网站的例子
1.Full Data Bindaing(POJO) Example
{
"name" : { "first" : "Joe", "last" : "Sixpack" },
"gender" : "MALE",
"verified" : false,
"userImage" : "Rm9vYmFyIQ=="
}
public class User {
public enum Gender {
MALE, FEMALE
};
public static class Name {
private String _first, _last;
public String getFirst() {
return _first;
}
public String getLast() {
return _last;
}
public void setFirst(String s) {
_first = s;
}
public void setLast(String s) {
_last = s;
}
}
private Gender _gender;
private Name _name;
private boolean _isVerified;
private byte[] _userImage;
public Name getName() {
return _name;
}
public boolean isVerified() {
return _isVerified;
}
public Gender getGender() {
return _gender;
}
public byte[] getUserImage() {
return _userImage;
}
public void setName(Name n) {
_name = n;
}
public void setVerified(boolean b) {
_isVerified = b;
}
public void setGender(Gender g) {
_gender = g;
}
public void setUserImage(byte[] b) {
_userImage = b;
}
}
ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally
User user = mapper.readValue(new File("user.json"), User.class);
mapper.writeValue(new File("user-modified.json"), user);
2.Simple Data Binding Example
Map<String, Object> userData = mapper.readValue(new File("user.json"), Map.class);
userData = new HashMap<String, Object>();
Map<String, String> nameStruct = new HashMap<String, String>();
nameStruct.put("first", "Joe");
nameStruct.put("last", "Sixpack");
userData.put("name", nameStruct);
userData.put("gender", "MALE");
userData.put("verified", Boolean.FALSE);
userData.put("userImage", "Rm9vYmFyIQ==");
mapper.writeValue(new File("user-modified.json"), userData);
Concrete Java types that Jackson will use for simple data binding are:
JSON Type | Java Type |
object | LinkedHashMap<String,Object> |
array | ArrayList<Object> |
string | String |
number (no fraction) | Integer, Long or BigInteger (smallest applicable) |
number (fraction) | Double (configurable to use BigDecimal) |
true false | Boolean |
null | null |
3.The Model Example
ObjectMapper m = new ObjectMapper();
// can either use mapper.readTree(JsonParser), or bind to JsonNode
JsonNode rootNode = m.readValue(new File("user.json"), JsonNode.class);
// ensure that "last name" isn't "Xmler"; if is, change to "Jsoner"
JsonNode nameNode = rootNode.path("name");
String lastName = nameNode.path("last").getTextValue();
if ("xmler".equalsIgnoreCase(lastName)) {
((ObjectNode)nameNode).put("last", "Jsoner");
}
// and write it out:
m.writeValue(new File("user-modified.json"), rootNode);
分享到:
相关推荐
JSON简介 JSON的全称是JavaScript Object Notation,是一种轻量级的数据交换格式。 JSON与 XML具有相同的特性,例如易于人编写和阅读,易于机器生成和解析。但是 JSON比XML数据传输的有效性要高出很多。 JSON完全...
jackson简介:Java生态圈中有很多处理JSON和XML格式化的类库,Jackson是其中比较著名的一个。虽然JDK自带了XML处理类库,但是相对来说比较低级,使用本文介绍的Jackson等高级类库处理起来会方便很多。
Visio 2010中涉及到的改进的功能或者新的功能的简介
使用JSONArray必须的几个包 1.JAR包简介 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: 1.commons-lang.jar 2.commons-beanutils.jar 3.commons-collections.jar 4.commons-logging...
简介: 内容介绍: Wicked WordPress Themes is a step-by-step guide to creating beautiful themes for the world's most popular CMS, WordPress. By following the book's advice, readers can produce ...
本项目为JNDI注入利用工具,生成JNDI连接并启动初始化相关服务,可用于Fastjson,Jackson等相关突破的验证。 本项目是基于welk1n的 ,在此项目的基础服务框架上,重新编写了攻击利用代码,支持更多更强大的功能,并...
27.1.Jackson 27.2.GSON 27.3.JSON-B 28.开发Web应用程序 28.1.“Spring Web MVC框架” 28.1.1.Spring MVC自动配置 28.1.2.HttpMessageConverters 28.1.3.自定义JSON序列化程序和反序列化程序 ...
JSON序列化器/反序列化器Java Jackson类似 语言选择 适用于Android的Java / Kotlin 适用于iOS的Objective C / Swift 简介/环境 开发人员 产品 用于开发和生产配置文件的IntelliJ Config文件 实体生成器 通过...
JSON序列化器/反序列化器Java Jackson类似 语言选择 适用于Android的Java / Kotlin 适用于iOS的Objective C / Swift 简介/环境 开发人员 产品 用于开发和生产配置文件的IntelliJ Config文件 实体生成器 通过...
layering-cache简介layering-cache是一个支持分布式环境的多级缓存框架,使用方式和spring-cache类似。使用Caffeine作为一级本地缓存,使用redis作为二级集中式缓存。一级缓存和二级缓存的数据一致性是通过推和拉两...
简介:“ Teratoma”一词源自希腊语“ teratos”,其中包括“ show”一词。 畸胎瘤源于多能生殖细胞的转化。 它们由不同比例的外胚层,内胚层和中胚层组织组成; 因此,术语“胚胎肿瘤”。 目的:我们报告了一个在...
1、天梯是一款使用Java编写的免费的轻量级CMS系统,目前提供了从后台管理到前端展现的整体解决方案。 2、用户可以不编写一句代码,就制作出一个默认风格的CMS站点。 3、前端页面自适应,支持PC和H5端,采用前后端...
本书适合于高等应用型本科院校、高等职业学校、高等专科学校、成人高校、本科院校举办的二级职业技术学院使用,也可供示范性软件职业技术学院、继续教育学院、民办高校、技能型紧缺人才培养使用,还可供本科院校、...
本书适合于高等应用型本科院校、高等职业学校、高等专科学校、成人高校、本科院校举办的二级职业技术学院使用,也可供示范性软件职业技术学院、继续教育学院、民办高校、技能型紧缺人才培养使用,还可供本科院校、...
相关软件包:servlet、mysql、lombok、jackson 功能点 用户管理 **注册:** 管理员用户进行注册,使用form表单收集用户的username和password。插入到数据库表中,为了提高安全性使用BCrypt对用户的密码进行加密。...
项目简介 CinemaBooker应用程序是客户在线预订电影票的平台。 浏览列出的电影后,用户可以相对轻松地登录到该应用程序并预订在线电影票。 该应用程序与剧院进行通信,以在购买座位后进行更新,并为客户创建门票...
Jackson 和 W. A. Stapleton 合著“Incorporating embedded programming skills into an ECE curriculum”。收于《ACM SIGBED Review Special Issue on the Second Workshop on Embedded Systems Education》(WESE ...
使用Jackson和Javadoc / KDoc自动记录和字段,,和 使用JSR 303注释自动记录字段和参数的和 通过自动记录 记录的助手 支持 方便的 用法 请参阅文档中的“部分。 样本项目 :Spring Boot 2.3,WebMVC,JUnit 4,Java
10.4Jackson 支持 96 第三部分 测试 97 11.测试方法安全性 97 11.1安全测试设置 98 11.2 @WithMockUser 98 11.3 @WithAnonymousUser 100 11.4 @用户详细信息 101 11.5 @WithSecurityContext 102 11.6测试元注释 104 ...
简介 Funtl Framework 基于多个优秀开源项目,高度整合封装,提供了互联网项目常用的工具类,如:在线支付、阿里云OSS、消息队列、Redis缓存、短信验证、百度编辑器、微信SDK等 模块 funtl-framework-core 核心模块...