java_web 学习记录(四):json

接上一篇继续学习json字符串与对象之间的转换,这里我们使用jackson包和fastjson包分别演示。

一,引入依赖包:

	<!-- jackson -->
	<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.6.5</version>
        </dependency>
        
        <!-- fastjson -->
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>fastjson</artifactId>
		<version>1.2.23</version>
	</dependency>
        

二,新建测试javabean

package com.example.entity;

public class UserInfo {
	
	private String name;
	
	private String password;
	
	public UserInfo() {
		
	}
	
	public UserInfo(String name, String password) {
		this.name = name;
		this.password = password;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	@Override
	public String toString() {
		return "UserInfo [name=" + name + ", password=" + password + "]";
	}
	
	

}
package com.example.entity;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * json对象转换类
 * @author Administrator
 *
 */
public class JsonObjectVo {

	private String title;
	
	private String msg;
	
	private Map<String,Object> map = new HashMap<String,Object>();
	
	private List<UserInfo> list = new ArrayList<UserInfo>();

	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public Map<String, Object> getMap() {
		return map;
	}

	public void setMap(Map<String, Object> map) {
		this.map = map;
	}

	public List<UserInfo> getList() {
		return list;
	}

	public void setList(List<UserInfo> list) {
		this.list = list;
	}
	
	
}

三,新建测试类

package com.example.test;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.junit.Test;

import com.example.entity.JsonObjectVo;
import com.example.entity.UserInfo;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

/**
 * 使用jackson 进行对象与json字符串的转换
 * @author Administrator
 *
 */
public class JacksonTest {
	
	@Test
	public void object2Json() throws JsonProcessingException{
		JsonObjectVo vo = new JsonObjectVo();
		vo.setTitle("对象转json");
		vo.setMsg("对象属性包括map和list");
		
		Map<String,Object> map = vo.getMap();
		map.put("mkey1", "mvalue1");
		map.put("mkey2", "mvalue2");
		
		vo.setMap(map);
		
		List<UserInfo> list = vo.getList();
		list.add(new UserInfo("user1","pwd1"));
		list.add(new UserInfo("user2","pwd2"));
		
		vo.setList(list);
		
		ObjectMapper objectMapper = new ObjectMapper();
		//设置格式
		objectMapper.configure(SerializationFeature.INDENT_OUTPUT, Boolean.TRUE);
		String json = objectMapper.writeValueAsString(vo);
		System.out.println("测试一,对象转json:"+json);
	}
	
	@Test
	public void json2Object() throws IOException{
		String json = "{\"title\" : \"对象转json\",\"msg\" : \"对象属性包括map和list\","
				+ "\"map\" : {\"mkey2\" : \"mvalue2\",\"mkey1\" : \"mvalue1\"},"
				+ "\"list\" : [ {\"name\" : \"user1\",\"password\" : \"pwd1\"}, "
				+ "{\"name\" : \"user2\",\"password\" : \"pwd2\"} ]}";
		
		ObjectMapper objectMapper = new ObjectMapper();
		JsonObjectVo vo = objectMapper.readValue(json,JsonObjectVo.class);
		System.out.println("测试二,json转对象:"+vo);
		
		//如果不知道json字符串反序列化的对象是什么,可以直接封装成map对象
		Map<String,Object> map = objectMapper.readValue(json, Map.class);
		System.out.println("测试三,json转Map:"+map);
		
	}

}

四,运行junit,查看控制台输出结果:

测试一,对象转json:{
  "title" : "对象转json",
  "msg" : "对象属性包括map和list",
  "map" : {
    "mkey2" : "mvalue2",
    "mkey1" : "mvalue1"
  },
  "list" : [ {
    "name" : "user1",
    "password" : "pwd1"
  }, {
    "name" : "user2",
    "password" : "pwd2"
  } ]
}
测试二,json转对象:JsonObjectVo [title=对象转json, msg=对象属性包括map和list, map={mkey2=mvalue2, mkey1=mvalue1}, list=[UserInfo [name=user1, password=pwd1], UserInfo [name=user2, password=pwd2]]]
测试三,json转Map:{title=对象转json, msg=对象属性包括map和list, map={mkey2=mvalue2, mkey1=mvalue1}, list=[{name=user1, password=pwd1}, {name=user2, password=pwd2}]}

五,测试fastjson

package com.example.test;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.junit.Test;

import com.alibaba.fastjson.JSON;
import com.example.entity.JsonObjectVo;
import com.example.entity.UserInfo;

/**
 * 使用 fastjson 进行对象与json字符串的转换
 * @author Administrator
 *
 */
public class fastjsonTest {
	
	@Test
	public void object2Json() throws IOException{
		JsonObjectVo vo = new JsonObjectVo();
		vo.setTitle("对象转json");
		vo.setMsg("对象属性包括map和list");
		
		Map<String,Object> map = vo.getMap();
		map.put("mkey1", "mvalue1");
		map.put("mkey2", "mvalue2");
		
		vo.setMap(map);
		
		List<UserInfo> list = vo.getList();
		list.add(new UserInfo("user1","pwd1"));
		list.add(new UserInfo("user2","pwd2"));
		
		vo.setList(list);
		
		String json = JSON.toJSONString(vo);
		System.out.println("测试一,对象转json:"+json);
	}
	
	@Test
	public void json2Object() throws IOException{
		String json = "{\"title\" : \"对象转json\",\"msg\" : \"对象属性包括map和list\","
				+ "\"map\" : {\"mkey2\" : \"mvalue2\",\"mkey1\" : \"mvalue1\"},"
				+ "\"list\" : [ {\"name\" : \"user1\",\"password\" : \"pwd1\"}, "
				+ "{\"name\" : \"user2\",\"password\" : \"pwd2\"} ]}";
		
		JsonObjectVo vo = JSON.parseObject(json,JsonObjectVo.class);
		System.out.println("测试三,json转Map:"+vo);
		
		@SuppressWarnings("unchecked")
		Map<String,Object> map = JSON.parseObject(json,Map.class);
		System.out.println("测试三,json转Map:"+map);
		
	}
}
六,运行junit,查看控制台输出结果:
测试一,对象转json:{"list":[{"name":"user1","password":"pwd1"},{"name":"user2","password":"pwd2"}],"map":{"mkey2":"mvalue2","mkey1":"mvalue1"},"msg":"对象属性包括map和list","title":"对象转json"}
测试三,json转Map:JsonObjectVo [title=对象转json, msg=对象属性包括map和list, map={mkey2=mvalue2, mkey1=mvalue1}, list=[UserInfo [name=user1, password=pwd1], UserInfo [name=user2, password=pwd2]]]
测试三,json转Map:{msg=对象属性包括map和list, title=对象转json, list=[{"password":"pwd1","name":"user1"},{"password":"pwd2","name":"user2"}], map={"mkey2":"mvalue2","mkey1":"mvalue1"}}

其他用法,大家自行测试吧。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值