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);
/*
* 不知默认排除的是什么东东
*/
}
}