json与javaObject之间转换

1.javaBean
public class User implements Serializable{

	private int id;
	private String username;
	private int age;


后面添加set/get方法

2.具体请看代码(javaBean/list/map--json数据格式之间的转换)

明白json只有普通数据和数组;而java,javaBean,集合,数组;且看他们之间转换。


package com.po;

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

import org.junit.Test;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import net.sf.json.JsonConfig;

/**
 * 快速入门网址:http://json-lib.sourceforge.net/usage.html#arrays
 * @author Caoyi
 *主要有:
 *1.JSONArray.fromObject();
 *2.JSONObject.fromObject();
 *3.	//1.创建JsonConfig对象
		JsonConfig jsonConfig = new JsonConfig(); 
		//2.设置排除的属性
		jsonConfig.setExcludes(new String[] { "id"});
 */
public class UseJsonrTest {
	
	@Test
	public void test()
	{
		List<User> list = new ArrayList<User>();
		
		User user1 = new User(1,"sha",16);
		User user2 = new User(2,"sha",16);
		User user3 = new User(3,"sha",16);
		
		list.add(user1);
		list.add(user2);
		list.add(user3);
		
		//将java对象转为json
		//比较两者不同的输出
		//System.out.println(JSONSerializer.toJSON(list).toString());
		/****************************************************/
//		JSONObject  jsonObject1 = JSONObject.fromObject(list);
//		System.out.println("****" + jsonObject1);
		
		JSONArray jsonArray = JSONArray.fromObject( list ); 
		//System.out.println(jsonArray.size());
		System.out.println(jsonArray.toString());
		JSONArray jsonArray2 =JSONArray.fromObject(jsonArray);
		
		//将json转为java对象
		List<User> list1 = new ArrayList<User>();
		
		for (int i = 0; i < jsonArray2.size(); i++) {
			   Object o = jsonArray2.get(i);
			   JSONObject jsonObject = JSONObject.fromObject(o);
			   User Person = (User) JSONObject.toBean(jsonObject, User.class);
			   list1.add(Person);
			   System.out.println(Person.getUsername());
			}
		System.out.println(list1);

		
	}
	/**
	 * 将json转换为java对象
	 */
	@Test
	public void jsonToObject()
	{
		String son = "{'id':'9','username':'aa','age':'66'}";
		
		//第一步,将jsonData字符串转为jsonObject
		JSONObject jsonObject = JSONObject.fromObject( son );
		//User user = (User)JSONObject.fromObject( son );//(报错)不能直接将jsonObject强转为java对象
		//第二步,将jsonObject转为java对象
		User bean = (User) JSONObject.toBean( jsonObject, User.class ); //注意参数
		
		System.out.println(bean.toString());
		System.out.println(bean.getUsername());
		
		/*************************/
		//报错,JSONArray必须的是jsonData带有“[]”;
//		JSONArray  jsonArray = JSONArray.fromObject(son);
//		System.out.println("jsonArray:" + jsonArray);
		

	}

	
	/**
	 * map集合转json
	 */
	@Test
	public void  mapToJson()
	{
		Map<String,String> map = new HashMap<String,String>();
		//注意,集合中key的唯一性
		map.put("i", "001");
		map.put("id", "002");
		
		/*
		 * 比较下面两种方法的结果
		 */
		JSONObject  jsonObject = JSONObject.fromObject(map);
		System.out.println(jsonObject.toString());
		
		JSONArray jsonArray = JSONArray.fromObject(map);
		System.out.println(jsonArray);
		
		/*
		 * JSONArray比JSONObject多了“[]”
		 * 对比与List集合(见下)
		 * map集合可以使用两种转换方法,一种直接转换,另一种直接转为json数组
		 * 为什么呢?
		 * 从json数据结构说起,json中就两种数据类型,用官网上的话说,一种是无序的,另一种是有序的
		 * java转json中,除了list必须转为有序,别的既可以有序也可以无序
		 * 其实上面那句是扯淡,map转换为有序,那{[map]},数组中也就一个元素,毛有序
		 * 真正要理解:从集合的思维理解
		 * list中有多个元素,而这每个元素又有多个属性(直白点,类比于二级目录)
		 */
		
	}
	
	/**
	 * list转json
	 */
	@Test
	public void listToJson()
	{
		//数据模拟
		List<User> list = new ArrayList<User>();
		
		User user1 = new User(1,"sha",16);
		User user2 = new User(2,"sha",16);
		User user3 = new User(3,"sha",16);
		
		list.add(user1);
		list.add(user2);
		list.add(user3);
		
//		报错()
//		JSONObject  jsonObject1 = JSONObject.fromObject(list);
//		System.out.println("****" + jsonObject1);
		
		JSONArray jsonArray = JSONArray.fromObject( list ); 
		System.out.println(jsonArray.toString());
		//输出:[{"age":16,"id":1,"username":"sha"},{"age":16,"id":2,"username":"sha"},{"age":16,"id":3,"username":"sha"}]
		//注意了,输出时“属性名”:“值”---------原因:后台自己解析了UserBean
		
		/******************************************************************************/
		/*
		 * json数组转list
		 * 注意了:
		 * 1.json转list和list转json使用的是一个方法JSONArray.fromObject(很奇葩的一个方法,正反一样)
		 * (内部原理是毛,反正我查了好久,没有找出来)
		 * 2.json先转为JSONArray,必须的遍历,再JSONObject取值
		 */
		JSONArray jsonArray2 =JSONArray.fromObject(jsonArray);
		List<User> list1 = new ArrayList<User>();
		for (int i = 0; i < jsonArray2.size(); i++)
		{
			   Object o = jsonArray2.get(i);
			   JSONObject jsonObject = JSONObject.fromObject(o);
			   User Person = (User) JSONObject.toBean(jsonObject, User.class);
			   list1.add(Person);
			   System.out.println(Person.getUsername());
		}
		System.out.println(list1);

		
	}
	@Test
	public void jsonArrayToObjects()
	{
		String jsonData ="[{'id':'9','username':'aa','age':'66'},{'id':'10','username':'bb','age':'66'}]";
		JSONArray jsonArray = JSONArray.fromObject(jsonData);
		//System.out.println(jsonArray.toString());
		List<User> list = new ArrayList<User>();
		
		for (int i = 0; i < jsonArray.size(); i++) {
			   Object o = jsonArray.get(i);
			   JSONObject jsonObject = JSONObject.fromObject(o);
			   User Person = (User) JSONObject.toBean(jsonObject, User.class);
			   list.add(Person);
			}
		System.out.println(list);

	}
	/**
	 * 从数据中减去不需要穿的属性
	 */
	@Test
	public void jsonTest()
	{
		//数据模拟
		List<User> list = new ArrayList<User>();
		
		User user1 = new User(1,"sha",16);
		User user2 = new User(2,"sha",16);
		User user3 = new User(3,"sha",16);
		
		list.add(user1);
		list.add(user2);
		list.add(user3);
		
		//核心代码
		//1.创建JsonConfig对象
		JsonConfig jsonConfig = new JsonConfig(); 
		//2.设置排除的属性
		jsonConfig.setExcludes(new String[] { "id"});
		//3.转换
		JSONArray jsonArray = JSONArray.fromObject( list ,jsonConfig); 
		System.out.println(jsonArray);
	}
	
	@Test
	public void jsonTest2()
	{
		//数据模拟
		 Map map = new HashMap();  
		 map.put("name", "json");  
		 map.put("class", "ddd");  
		 map.put("id","111");
		 map.put("idd","222");
		 JsonConfig config = new JsonConfig();  
		// config.setIgnoreDefaultExcludes(true);  //默认为false,即过滤默认的key  
		 JSONObject jsonObject = JSONObject.fromObject(map,config);  
		 System.out.println(jsonObject);  
		 /*
		  * 不知默认排除的是什么东东
		  */

	}
	
	
	

}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值