`
jja1982
  • 浏览: 112603 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Jackson 使用简介

    博客分类:
  • J2EE
阅读更多
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);


3
1
分享到:
评论

相关推荐

    阿里 json 和jackson 完整Jar包

    JSON简介 JSON的全称是JavaScript Object Notation,是一种轻量级的数据交换格式。 JSON与 XML具有相同的特性,例如易于人编写和阅读,易于机器生成和解析。但是 JSON比XML数据传输的有效性要高出很多。 JSON完全...

    jackson.zip

    jackson简介:Java生态圈中有很多处理JSON和XML格式化的类库,Jackson是其中比较著名的一个。虽然JDK自带了XML处理类库,但是相对来说比较低级,使用本文介绍的Jackson等高级类库处理起来会方便很多。

    Visio 2010 功能比较

    Visio 2010中涉及到的改进的功能或者新的功能的简介

    JSON所需要的几个包

    使用JSONArray必须的几个包 1.JAR包简介 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: 1.commons-lang.jar 2.commons-beanutils.jar 3.commons-collections.jar 4.commons-logging...

    构建自己最出色的WordPress主题

    简介: 内容介绍: 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注入利用工具

    本项目为JNDI注入利用工具,生成JNDI连接并启动初始化相关服务,可用于Fastjson,Jackson等相关突破的验证。 本项目是基于welk1n的 ,在此项目的基础服务框架上,重新编写了攻击利用代码,支持更多更强大的功能,并...

    Spring Boot中文文档.rar

    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序列化程序和反序列化程序 ...

    generator-jhipster-flutter-jdlc:JHipster的Flutter模块。 它将使用Flutter生成移动应用(iOS,Android)

    JSON序列化器/反序列化器Java Jackson类似 语言选择 适用于Android的Java / Kotlin 适用于iOS的Objective C / Swift 简介/环境 开发人员 产品 用于开发和生产配置文件的IntelliJ Config文件 实体生成器 通过...

    generator-jhipster-flutter:JHipster的Flutter模块。 它将使用Flutter生成移动应用(iOS,Android)

    JSON序列化器/反序列化器Java Jackson类似 语言选择 适用于Android的Java / Kotlin 适用于iOS的Objective C / Swift 简介/环境 开发人员 产品 用于开发和生产配置文件的IntelliJ Config文件 实体生成器 通过...

    layering-cache:为监控而生的分布式多级缓存框架

    layering-cache简介layering-cache是一个支持分布式环境的多级缓存框架,使用方式和spring-cache类似。使用Caffeine作为一级本地缓存,使用redis作为二级集中式缓存。一级缓存和二级缓存的数据一致性是通过推和拉两...

    论文研究 - 先天性宫颈畸胎瘤

    简介:“ Teratoma”一词源自希腊语“ teratos”,其中包括“ show”一词。 畸胎瘤源于多能生殖细胞的转化。 它们由不同比例的外胚层,内胚层和中胚层组织组成; 因此,术语“胚胎肿瘤”。 目的:我们报告了一个在...

    CMS轻量级系统

    1、天梯是一款使用Java编写的免费的轻量级CMS系统,目前提供了从后台管理到前端展现的整体解决方案。 2、用户可以不编写一句代码,就制作出一个默认风格的CMS站点。 3、前端页面自适应,支持PC和H5端,采用前后端...

    [软件工程].曾强聪.文字版

    本书适合于高等应用型本科院校、高等职业学校、高等专科学校、成人高校、本科院校举办的二级职业技术学院使用,也可供示范性软件职业技术学院、继续教育学院、民办高校、技能型紧缺人才培养使用,还可供本科院校、...

    软件工程 曾强聪

    本书适合于高等应用型本科院校、高等职业学校、高等专科学校、成人高校、本科院校举办的二级职业技术学院使用,也可供示范性软件职业技术学院、继续教育学院、民办高校、技能型紧缺人才培养使用,还可供本科院校、...

    基于JavaWeb的在线问卷调查系统源码+项目部署说明.zip

    相关软件包:servlet、mysql、lombok、jackson 功能点 用户管理 **注册:** 管理员用户进行注册,使用form表单收集用户的username和password。插入到数据库表中,为了提高安全性使用BCrypt对用户的密码进行加密。...

    Chris_Proutt_P1:CinemaBooker应用程序是客户在线预订电影票的平台。 浏览列出的电影后,用户可以相对轻松地登录到该应用程序并预​​订在线电影票。 该应用程序与剧院进行通信,以在购买座位后进行更新,并为客户创建门票

    项目简介 CinemaBooker应用程序是客户在线预订电影票的平台。 浏览列出的电影后,用户可以相对轻松地登录到该应用程序并预​​订在线电影票。 该应用程序与剧院进行通信,以在购买座位后进行更新,并为客户创建门票...

    WinCE 6.0 R2 和eBox 4300嵌入式计算机简明教程与实验练习(美国佐治亚理工学院)

    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 ...

    spring-auto-restdocs:Spring Auto REST文档是Spring REST文档的扩展

    使用Jackson和Javadoc / KDoc自动记录和字段,,和 使用JSR 303注释自动记录字段和参数的和 通过自动记录 记录的助手 支持 方便的 用法 请参阅文档中的“部分。 样本项目 :Spring Boot 2.3,WebMVC,JUnit 4,Java

    spring security 参考手册中文版

    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 ...

    xmljava系统源码-framework:FUNTL框架

    简介 Funtl Framework 基于多个优秀开源项目,高度整合封装,提供了互联网项目常用的工具类,如:在线支付、阿里云OSS、消息队列、Redis缓存、短信验证、百度编辑器、微信SDK等 模块 funtl-framework-core 核心模块...

Global site tag (gtag.js) - Google Analytics