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);
/*
* 不知默認排除的是什麼東東
*/
}
}