`

jackson快速小结

 
阅读更多
1 对象转换为json
 
ObjectMapper mapper = new ObjectMapper();
Staff obj = new Staff();


mapper.writeValue(new File("c:\\file.json"), obj);


String jsonInString = mapper.writeValueAsString(obj);



2 json转换为object
ObjectMapper mapper = new ObjectMapper();
String jsonInString = "{'name' : 'mkyong'}";

//JSON from file to Object
Staff obj = mapper.readValue(new File("c:\\file.json"), Staff.class);

//JSON from URL to Object
Staff obj = mapper.readValue(new URL("http://mkyong.com/api/staff.json"), Staff.class);

//JSON from String to Object
Staff obj = mapper.readValue(jsonInString, Staff.class);



3  格式化输出
 

	// Convert object to JSON string and pretty print
			jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(staff);
			System.out.println(jsonInString);


  {
  "name" : "mkyong",
  "age" : 33,
  "position" : "Developer",
  "salary" : 7500,
  "skills" : [ "java", "python" ]
}

4 使用@JsonView, 控制哪些字段输出
  先定义view
public class Views {

	public static class Normal{};
	
	public static class Manager extends Normal{};

}


对于normal的,是看不到薪酬,如果经理,则看到
 
public class Staff {

	@JsonView(Views.Normal.class)
	private String name;

	@JsonView(Views.Normal.class)
	private int age;

	@JsonView(Views.Normal.class)
	private String position;

	@JsonView(Views.Manager.class)
	private BigDecimal salary;

	@JsonView(Views.Normal.class)
	private List<String> skills;

则:

// Salary will be hidden
			System.out.println("Normal View");
			String normalView = mapper.writerWithView(Views.Normal.class).writeValueAsString(staff);
			System.out.println(normalView);

			String jsonInString = "{\"name\":\"mkyong\",\"age\":33,\"position\":\"Developer\",\"salary\":7500,\"skills\":[\"java\",\"python\"]}";
			Staff normalStaff = mapper.readerWithView(Views.Normal.class).forType(Staff.class).readValue(jsonInString);
			System.out.println(normalStaff);

			// Display everything
			System.out.println("\nManager View");
			String managerView = mapper.writerWithView(Views.Manager.class).writeValueAsString(staff);
			System.out.println(managerView);

			Staff managerStaff = mapper.readerWithView(Views.Manager.class).forType(Staff.class).readValue(jsonInString);
			System.out.println(managerStaff);


输出:
Normal View
{"name":"mkyong","age":33,"position":"Developer","skills":["java","python"]}
Staff [name=mkyong, age=33, position=Developer, salary=null, skills=[java, python]]

Manager View
{"name":"mkyong","age":33,"position":"Developer","salary":7500,"skills":["java","python"]}
Staff [name=mkyong, age=33, position=Developer, salary=7500, skills=[java, python]]


5 常见问题
   json转变为数组
  String json = "[{\"name\":\"mkyong\"}, {\"name\":\"laplap\"}]";
List<Staff> list = mapper.readValue(json, new TypeReference<List<Staff>>(){});
把json转变为map
  String json = "{\"name\":\"mkyong\", \"age\":33}";
Map<String, Object> map = mapper.readValue(json, new TypeReference<Map<String,Object>>(){});

分享到:
评论

相关推荐

    jackson快速入门

    这篇“Jackson快速入门”将带你快速掌握Jackson的核心功能和使用方法。 首先,我们需要了解Jackson的基本组件。核心组件包括`Jackson-databind`,它提供了`ObjectMapper`类,用于实现对象到JSON和JSON到对象的转换...

    官网jackson快速指导

    ### Jackson 快速指南知识点详解 #### 一、Jackson 概览 Jackson 是一款基于 Java 的库,主要用于实现 Java 对象与 JSON 数据之间的序列化与反序列化操作。这款库以其简单易用、高效及无需额外依赖等特性而受到...

    jackson-annotations、jackson-core、jackson-databind

    "jackson-annotations"、"jackson-core"和"jackson-databind"是Jackson库的三个核心模块,它们协同工作,提供了强大的JSON序列化和反序列化功能。 1. **jackson-annotations**:这个模块包含了各种注解,如`@...

    jackson-annotations jackson-core jackson-databind

    标题提到的"jackson-annotations"、"jackson-core"和"jackson-databind"是Jackson库的核心组成部分,它们协同工作,使得Java对象能够被序列化为JSON,以及反序列化为Java对象。 1. **jackson-annotations**:这个...

    jackson-databind jackson-annatation jackson-core jackson-mapper

    Jackson是Java领域中广泛使用的JSON处理库,由FasterXML公司开发并维护。它提供了高效、功能丰富的处理JSON的方式,包括序列化和反序列化。在这个包中提到了四个关键组件:"jackson-databind"、"jackson-annotations...

    jackson 全部jar包

    8. **错误处理**:Jackson提供了一套完整的错误处理机制,包括异常类和错误报告,帮助开发者快速定位和解决JSON处理过程中的问题。 9. **配置选项**:Jackson提供了大量的配置选项,允许开发者根据项目需求定制JSON...

    jackson-core所需的三个包;jackson-databind.jar,jackson-annotations.jar,jackson-core.jar

    Jackson是Java领域中广泛使用的JSON处理库,它提供了一套高效、灵活的API来解析、生成、转换JSON数据。在Spring MVC框架中,Jackson库通常用于处理HTTP请求和响应中的JSON数据,使得Java对象能够方便地序列化为JSON...

    Jackson 2.9.3 和 jackson 2.9.3源码

    Jackson是Java领域中广泛使用的JSON处理库,2.9.3是其版本号。这个压缩包包含两个主要文件:`jackson-core-2.9.3.jar`和`jackson-core-master(1).zip`。前者是编译后的二进制JAR文件,可以直接在项目中引用以使用...

    jackson-annotations.jar jackson-core.jar jackson-databind.jar

    Jackson是Java领域中广泛使用的JSON处理库,由FasterXML公司开发并维护。这个库的主要功能是将Java对象转换为JSON格式,同时也能够将JSON数据转换回Java对象,极大地简化了JSON的序列化和反序列化操作。在给定的...

    jackson 1.5中文帮助文档

    6. **性能优化**:Jackson提供多种性能优化策略,比如启用树模型(`JsonNode`)进行快速读写,或者设置`ObjectMapper`的配置以减少内存使用和提升速度。 7. **错误处理**:在序列化和反序列化过程中,Jackson会捕获...

    jackson2.7-jar

    Jackson是Java领域中广泛使用的JSON处理库,它的2.7版本是其发展中的一个重要里程碑,提供了许多增强特性和性能优化。Jackson 2.7 jar文件是这个版本的二进制库,包含了处理JSON序列化和反序列化所需的所有类和方法...

    jackson-annotations-2.9.5.jar ,jackson-core-2.9.5.jar,jackson-databind-2.9.5.jar

    这个压缩包包含的三个核心组件——`jackson-annotations-2.9.5.jar`、`jackson-core-2.9.5.jar`和`jackson-databind-2.9.5.jar`是Jackson库的核心部分,它们协同工作,提供了全面的JSON解析和生成能力。 1. **...

    jackson-2.7.0版架包

    jackson-2.7.0版架包jackson-2.7.0版架包jackson-2.7.0版架包jackson-2.7.0版架包jackson-2.7.0版架包jackson-2.7.0版架包jackson-2.7.0版架包jackson-2.7.0版架包jackson-2.7.0版架包jackson-2.7.0版架包jackson-...

    Jackson1.9 jar 全部jar包

    Jackson的主要目标是提供快速、高效且功能丰富的JSON解析和生成能力,它支持多种数据绑定模式,广泛应用于Web服务、API开发以及数据序列化等场景。 Jackson库的核心组件包括: 1. **Jackson-core**: 这是Jackson的...

    jackson-annotations-2.2.3.jar jackson-core-2.2.3.jar jackson-databind-2.2.3.jar

    这个压缩包包含了Jackson库的三个核心组件的2.2.3版本:`jackson-annotations-2.2.3.jar`、`jackson-core-2.2.3.jar` 和 `jackson-databind-2.2.3.jar`。 1. **jackson-annotations-2.2.3.jar**: 这个模块提供了...

    jackson依赖jar包.

    Jackson是Java领域中广泛使用的JSON处理库,由FasterXML公司开发并维护。它提供了高效、功能丰富的处理JSON的各种工具,包括序列化和反序列化。在Java应用程序中,Jackson库是一个不可或缺的部分,特别是对于那些...

    jackson2.5-all

    Jackson是Java领域中广泛使用的JSON处理库,它提供了一套高效、灵活的API来解析、生成、序列化和反序列化JSON数据。标题中的"jackson2.5-all"指的是Jackson库的2.5版本,这是一个集合了核心组件、数据绑定和注解支持...

    jackson-2.8.11.jar

    它的核心组件包括三个主要部分:jackson-annotations、jackson-core和jackson-databind,这恰好对应了给定的文件名"jackson-annotations-2.8.11.jar"、"jackson-core-2.8.11"和"jackson-databind-2.8.11.jar"。...

    jackson 完整Jar包

    Jackson fasterxml和codehaus的区别: 他们是Jackson的两大分支、也是两个版本的不同包名。Jackson从2.0开始改用新的包名fasterxml;1.x版本的包名是codehaus。除了包名不同,他们的Maven artifact id也不同。1.x...

    jackson-all.jar

    jackson优势: (1)Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。 (2)相比json-lib框架,Jackson所依赖的jar包较少,只需下载:jackson-all-1.6.*.jar ~ jackson-all-...

Global site tag (gtag.js) - Google Analytics