通过Jackson实现Java对象和json字符串的相互转换

通过Jackson实现Java对象和json字符串的相互转换 

下面的案例使用单元测试(junit)方式进行了测试,所以在测试中需要配置junit环境,本人使用的eclipse开发工具,eclipse自带junit测试环境但需要配置,其它的开发工具则需要导入junit测试包。

注:junit测试时测试的方法名必须以test开始,并且在方法上面必须加 @Test

需要导入的Jackson包:


示例代码如下:

package cn.sz.hcq.test;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.jasper.tagplugins.jstl.core.ForEach;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.JavaType;
import org.codehaus.jackson.type.TypeReference;
import org.junit.Test;

import cn.sz.hcq.pojo.User;

public class JacksonTest {
	/**
	 * 将java对象转换为json字符串
	 * 
	 * @throws IOException
	 * @throws JsonMappingException
	 * @throws JsonGenerationException
	 */
	@Test
	public void testObjectToString() throws JsonGenerationException, JsonMappingException, IOException {
		User u1 = new User();
		u1.setId(1);
		u1.setName("张三");
		// 创建实现转换的对象
		ObjectMapper mapper = new ObjectMapper();
		// 将java对象转换为json字符串
		String str = mapper.writeValueAsString(u1);
		System.out.println("将java对象转换为json字符串:" + str);
	}

	/**
	 * 将json字符串转换为Java对象
	 * 
	 * @throws IOException
	 * @throws JsonMappingException
	 * @throws JsonParseException
	 */
	@Test
	public void testStringToObject() throws JsonParseException, JsonMappingException, IOException {
		String str = "{\"id\":1,\"name\":\"张三\"}";

		ObjectMapper mapper = new ObjectMapper();
		// 将json字符串解析为一个Java对象
		User u = mapper.readValue(str, User.class);
		System.out.println("将json字符串转换为Java对象:" + u.toString());
	}

	/**
	 * 将List对象转换为Json字符串
	 * 
	 * @throws JsonGenerationException
	 * @throws JsonMappingException
	 * @throws IOException
	 */
	@Test
	public void testListToString() throws JsonGenerationException, JsonMappingException, IOException {

		User u1 = new User();
		u1.setId(1);
		u1.setName("张三");

		User u2 = new User();
		u2.setId(2);
		u2.setName("李四");

		List<User> list = new ArrayList<>();
		list.add(u1);
		list.add(u2);

		ObjectMapper oMapper = new ObjectMapper();
		String str = oMapper.writeValueAsString(list);

		System.out.println("将List对象转换为Json字符串:" + str);
	}

	/**
	 * 将Json字符串转换为List对象
	 * 
	 * @throws IOException
	 * @throws JsonMappingException
	 * @throws JsonParseException
	 */
	@Test
	public void testStringToList() throws JsonParseException, JsonMappingException, IOException {
		String str = "[{\"id\":1,\"name\":\"张三\"},{\"id\":1,\"name\":\"李四\"}]";
		ObjectMapper mapper = new ObjectMapper();
		List<User> list = mapper.readValue(str, getCollectionType(List.class, User.class));
		for (User u : list) {
			System.out.println("将Json字符串转换为List对象:" + u);
		}
	}

	public JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
		ObjectMapper mapper = new ObjectMapper();
		return mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
	}

	/**
	 * 将Map对象转换为Json字符串
	 * 
	 * @throws JsonGenerationException
	 * @throws JsonMappingException
	 * @throws IOException
	 */
	@Test
	public void testMapToString() throws JsonGenerationException, JsonMappingException, IOException {

		User u1 = new User();
		u1.setId(1);
		u1.setName("张三");

		User u2 = new User();
		u2.setId(2);
		u2.setName("李四");

		Map<String, User> map = new HashMap<>();
		map.put("u1", u1);
		map.put("u2", u2);

		ObjectMapper oMapper = new ObjectMapper();
		String str = oMapper.writeValueAsString(map);

		System.out.println("将Map对象转换为Json字符串:" + str);
	}

	/**
	 * 将Json字符串转换为Map对象
	 * 
	 * @throws IOException
	 * @throws JsonMappingException
	 * @throws JsonParseException
	 */
	@Test
	public void testStringToMap() throws JsonParseException, JsonMappingException, IOException {
		String str = "{\"u1\":{\"id\":1,\"name\":\"张三\"},\"u2\":{\"id\":2,\"name\":\"李四\"}}";
		ObjectMapper mapper = new ObjectMapper();
		Map<String, User> map = mapper.readValue(str, new TypeReference<Map<String, User>>() {
		});

		Set<String> set = map.keySet();
		Iterator<String> it = set.iterator();
		while (it.hasNext()) {
			String key = (String) it.next();
			System.out.println(key + "," + map.get(key));
		}

	}

}



测试结果如下:

将Java对象转换为json字符串


将json字符串转换为java对象


将list集合转换为json字符串


将json字符串转换为list集合


将映射集合(Map)转换为json字符串


将json字符串转换为映射集合对象


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值