`
hypgr
  • 浏览: 273406 次
社区版块
存档分类
最新评论

Jackson 使用简介

阅读更多
 

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);  
 
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 和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