json处理三部曲之第二曲:利用Jackson处理json

利用Jackson处理json需要导入的jar包(2以上版本的):

<dependency>
     <groupId>com.fasterxml.jackson.core</groupId>
     <artifactId>jackson-core</artifactId>
     <version>2.3.3</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.3.3</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.3.3</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-smile</artifactId>
    <version>2.3.3</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.jaxrs</groupId>
    <artifactId>jackson-jaxrs-json-provider</artifactId>
    <version>2.3.3</version>
</dependency>
<!-- Support for JAX-B annotations as additional configuration -->
<dependency>
    <groupId>com.fasterxml.jackson.module</groupId>
    <artifactId>jackson-module-jaxb-annotations</artifactId>
    <version>2.3.3</version>
</dependency>
测试代码:

@Test
	public void writeEntity2JSON() throws JsonProcessingException, IOException {
		ObjectMapper objectMapper = new ObjectMapper();
		Person person = new Person();
		person.setId(1);
		person.setName("zhangsan");
		person.setEmail("zhangsan@126.com");
	       /**
          * ObjectMapper是JSON操作的核心,Jackson的所有JSON操作都是在ObjectMapper中实现。
          * ObjectMapper有多个JSON序列化的方法,可以把JSON字符串保存File、OutputStream等不同的介质中。
          * writeValue(File file, Object arg1)把arg1转成json序列,并保存到file文件中。
          * writeValue(OutputStream out, Object arg1)把arg1转成json序列,并保存到out输出流中。
          * writeValueAsBytes(Object arg0)把arg0转成json序列,并把结果输出成字节数组。
          * writeValueAsString(Object arg0)把arg0转成json序列,并把结果输出成字符串。
          */
		String jsonStr=objectMapper.writeValueAsString(person);
                System.out.println(jsonStr);
 }

	@Test
	public void readJson2Entity() throws JsonParseException, JsonMappingException, IOException {
		ObjectMapper objectMapper = new ObjectMapper();
		String json = "{\"id\":1,\"name\":\"haha\",\"email\":\"email\"}";
		Person acc = objectMapper.readValue(json, Person.class);
		System.out.println(acc);
	}

	@Test
	public void readJson2Map() throws JsonParseException, JsonMappingException, IOException {
		ObjectMapper objectMapper = new ObjectMapper();
		String json = "{\"A\":{\"id\":1,\"name\":\"zhangsan\",\"email\":\"zhangsan@126.com\"},\"B\":{\"id\":2,\"name\":\"lisi\",\"email\":\"lisi@126.com\"},\"success\":true}";
		@SuppressWarnings("unchecked")
		Map<String, Map<String, Object>> maps = objectMapper.readValue(json, Map.class);
		System.out.println(maps);
	}

	@Test
	public void readJson2List() throws IOException {
		ObjectMapper objectMapper = new ObjectMapper();
		String json = "[{\"id\":1,\"name\":\"zhangsan\",\"email\":\"zhangsan@126.comemail\"},{\"id\":2,\"name\":\"lisi\",\"email\":\"lisi@126.com\"}]";
		@SuppressWarnings("unchecked")
		List<LinkedHashMap<String, Object>> list = objectMapper.readValue(json, List.class);
		System.out.println(list);
	}

	@Test
	public void readJson2Array() throws JsonParseException, JsonMappingException, IOException {
		ObjectMapper objectMapper = new ObjectMapper();
		String json = "[{\"id\":1,\"name\":\"zhangsan\",\"email\":\"zhangsan@126.com\"},{\"id\":2,\"name\":\"lisi\",\"email\":\"lisi@126.com\"}]";
		Person[] arr = objectMapper.readValue(json, Person[].class);
		System.out.println(arr.length);
	}
其实主要用到了两个方法:

转换成json对象或者说json字符串时,用objectMapper的writeValueAsString()方法或是writeValue()重载方法(objectMapper只需通过无参构造器new出来)

转换json字符串时用objectMapperd的readValue(String content, Class<T> valueType),直接得到JavaBean对象,中间并没有转换成Json对象环节。

一个writeValueAsString(),一个是readValue(),对应的,很好记。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值