利用Gson使json字符串与java bean/list/map之间的相互转换

2 篇文章 0 订阅

public class GsonPracticeUtil {
	public static void main(String[] args) {
		Gson gson = new Gson();
		Member m1 = new Member();
		m1.setDisPlayName("m1");
		m1.setEmail("1@qq.com");
		m1.setSex(Sex.Male);
		System.out.println("----------简单对象之间的转化-------------");
		// 简单的bean转为json
		String s1 = gson.toJson(m1);
		System.out.println("简单Bean转化为Json===" + s1);

		// json转为简单Bean
		Member member = gson.fromJson(s1, Member.class);
		System.out.println("Json转为简单Bean===" + member);
		Member m2 = new Member();
		m1.setDisPlayName("m2");
		m1.setEmail("2@qq.com");
		m1.setSex(Sex.Female);
		List<Member> mList = new ArrayList<>();
		mList.add(m1);
		mList.add(m2);
		String s2 = gson.toJson(mList);
		System.out.println("简单List转化为Json===" + s2);

		// json转为简单List
		List<Member> memberList = gson.fromJson(s2,
				new TypeToken<List<Member>>() {
				}.getType());
		for (Member m : memberList)
			System.out.println("Json转为简单list===" + m);

		Map<String, Member> strMemberMap = new HashMap<>();
		strMemberMap.put("member1", m1);
		strMemberMap.put("member2", m2);
		String s3 = gson.toJson(strMemberMap);
		System.out.println("简单map转化为Json===" + s3);

		// json转为简单Map
		Map<String, Member> map = gson.fromJson(s3,
				new TypeToken<Map<String, Member>>() {
				}.getType());
		for (Entry<String, Member> entry : map.entrySet())
			System.out.println("Json转为简单map===" + entry.getKey() + "     "
					+ entry.getValue());
		Map<Member, String> mStrMap = new HashMap<>();
		mStrMap.put(m1, "memberString1");
		mStrMap.put(m2, "memberString2");
		String s4 = new GsonBuilder().enableComplexMapKeySerialization()
				.create().toJson(mStrMap);
		System.out.println("简单map2转化为Json===" + s4);

		// json转为简单Map2
		Map<Member, String> map2 = gson.fromJson(s4,
				new TypeToken<Map<Member, String>>() {
				}.getType());
		for (Entry<Member, String> entry : map2.entrySet())
			System.out.println("Json转为简单map2===" + entry.getKey() + "     "
					+ entry.getValue());
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值