fastjson

本文详细介绍了Java序列化与反序列化的概念、原理及应用,包括如何将JavaBean、Map、List转化为JSON字符串,以及如何将JSON字符串转化为JavaBean、Map、List。此外,还展示了如何获取复杂JSON中的指定数组以及如何进行泛型反序列化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.序列化

      即将javabean、map、list等转化为json字符串

     (1)JavaBean序列化

	@Test
	public void test() 
	{
		Person person = new Person();
		person.setAge(2);
		person.setId(1);
		person.setName("lucy");
		
		String jsonString = JSON.toJSONString(person);
		System.out.println(jsonString);
	}
             结果为:

{"age":2,"friend":[],"id":1,"name":"lucy"}

     (2)Map序列化

	@Test
	public void testMap() 
	{
		HashMap<String, Object> map = new HashMap<String, Object>();
		map.put("username", "zhangsan");
		map.put("age", 24);
		map.put("sex", "男");

		// map集合
		HashMap<String, Object> temp = new HashMap<String, Object>();
		temp.put("name", "xiaohong");
		temp.put("age", "23");
		map.put("girlInfo", temp);

		// list集合
		List<String> list = new ArrayList<String>();
		list.add("爬山");
		list.add("骑车");
		list.add("旅游");
		map.put("hobby", list);
		
		String jsonString = JSON.toJSONString(map);
		System.out.println(jsonString);
	}
        结果为:

{"sex":"男","username":"zhangsan","age":24,"hobby":["爬山","骑车","旅游"],"girlInfo":{"age":"23","name":"xiaohong"}}

2.反序列化

      即将json字符串转化为JavaBean、map、list等

     (1)转化为JavaBean

	@Test
	public void testParse() 
	{
		String json="{\"age\":2,\"id\":1,\"name\":\"lucy\"}"; 

		 //反序列化 
		 Person personInfo=JSON.parseObject(json,Person.class); 
		 System.out.println("name:"+personInfo.getName()+", age:"+personInfo.getAge()); 
	}
               结果为:

name:lucy, age:2

     (2)转化为Map

	@Test
	public void testParse() 
	{
		String json="{\"sex\":\"男\",\"username\":\"zhangsan\",\"age\":24,\"hobby\":[\"爬山\",\"骑车\",\"旅游\"],\"girlInfo\":{\"age\":\"23\",\"name\":\"xiaohong\"}}"; 
		    
		Map<String, Object> map = JSON.parseObject(json, Map.class);
		for (Entry<String, Object> entry : map.entrySet()) {
			System.out.println(entry.getKey()+"  "+entry.getValue());
		}
	}
              结果为:

username  zhangsan
sex  男
age  24
hobby  ["爬山","骑车","旅游"]
girlInfo  {"name":"xiaohong","age":"23"}


     (3)获取稍复杂json中的指定数组

{
	"count":123,
	"result":{
	           "code":"200",
	           "status":"success"
	         }, 
	"list":[
			{
			 	"entName":"x",  
				"entType":"9910",  
				"speCause":"3",  
				"abnTime":"Mar 13, 2015 12:00:00 AM"
			},
			{
				"entName":"y",  
				"entType":"9990",  
				"speCause":"1",  
				"abnTime":"Mar 13, 2015 12:00:00 AM"
			}]
}
            需要获取其中的list来解析:

	@Test
	public void test() {
		JSONObject jObject = JSON.parseObject(rawJson);
		JSONArray jArray = jObject.getJSONArray("list");
		for (Object object : jArray) {
			System.out.println(object);
		}
	}
           结果为:

{"speCause":"3","entType":"9910","entName":"x","abnTime":"Mar 13, 2015 12:00:00 AM"}
{"speCause":"1","entType":"9990","entName":"y","abnTime":"Mar 13, 2015 12:00:00 AM"}
          这样获得的就是简单json了,简单转换即可


     (4)泛型的反序列化

	@Test
	public void test4() 
	{
		String json = "{\"person\":{\"name\":\"zhangsan\",\"age\":25}}";
		Map<String, Person> map = JSON.parseObject(json,new TypeReference<Map<String, Person>>() {});

		for (Entry<String, Person> entry : map.entrySet()) 
		{
			System.out.println(entry.getKey()+"  "+entry.getValue().getName());
		}
	}
             结果为:

person  zhangsan

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值