一、對象方式:JSONObject的數據是用 { } 來表示的,java
例如: { "id" : "123", "courseID" : "huangt-test", "title" : "提交做業", "content" : null }json
二、數組方式:JSONArray,顧名思義是由JSONObject構成的數組,用 [ { } , { } , ...... , { } ] 來表示數組
例如:[ { "id" : "123", "courseID" : "huangt-test", "title" : "提交做業" } , { "content" : null, "beginTime" : 1398873600000 "endTime" } ] ;ide
表示了包含2個JSONObject的JSONArray。工具
對象/數組 | toJSONString | parse | parseObject | parseArray |
JSON | 對象/數組 | 數據是對象時,返回:JSONObject的Object測試 數據是數組時,返回:JSONArray的Objectthis |
對象 | 數組 |
JSONObject | 對象/數組 | 數據是對象時,返回:JSONObject的Objectspa 數據是數組時,返回:JSONArray的Object3d |
對象 | 數組 |
JSONArray | 對象/數組 | 數據是對象時,返回:JSONObject的Objectcode 數據是數組時,返回:JSONArray的Object |
對象 | 數組 |
parseObject:泛型實現 返回 具體bean;非泛型實現 返回 JSONObject
parseArray:泛型實現 返回 具體List<bean>;非泛型實現 返回 JSONArray<JSONObject>
parse:至關於parseObject和parseArray的非泛型實現
工具類Person
public class Person { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Person(String name, Integer age) { this.name = name; this.age = age; } public Person() { } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
/** * 數據是 對象 測試 */ public class ObjectJsonTest { @Test public void testtoJSONString(){ Person person = new Person("aa", 1); String s1 = JSON.toJSONString(person); System.out.println(s1); String s2 = JSONObject.toJSONString(person); System.out.println(s2); String s3 = JSONArray.toJSONString(person); System.out.println(s3); } @Test public void testparseObject(){ Person person = new Person("aa", 1); String s1 = JSON.toJSONString(person); System.out.println(s1); Person p1 = JSON.parseObject(s1, Person.class); JSONObject jsonObject = JSON.parseObject(s1); System.out.println(p1); Person p2 = JSONObject.parseObject(s1, Person.class); System.out.println(p2); Person p3 = JSONArray.parseObject(s1, Person.class); System.out.println(p3); } /** * 失敗 */ @Test public void testparseArray(){ Person person = new Person("aa", 1); String s1 = JSON.toJSONString(person); System.out.println(s1); //失敗:轉數組 必須是 list List<Person> p1 = JSON.parseArray(s1, Person.class); System.out.println(p1); //失敗:轉數組 必須是 list List<Person> p2 = JSONObject.parseArray(s1, Person.class); System.out.println(p2); //失敗:轉數組 必須是 list List<Person> p3 = JSONArray.parseArray(s1, Person.class); System.out.println(p3); } }
/** * 數據是 數組 測試 */ public class ArrayJsonTest { @Test public void testtoJSONString(){ Person person = new Person("aa", 1); List<Person> list =new ArrayList<>(); list.add(person); String s1 = JSON.toJSONString(list); System.out.println(s1); String s2 = JSONObject.toJSONString(list); System.out.println(s2); String s3 = JSONArray.toJSONString(list); System.out.println(s3); } //失敗 @Test public void testparseObject(){ Person person = new Person("aa", 1); List<Person> list =new ArrayList<>(); list.add(person); String s1 = JSON.toJSONString(list); System.out.println(s1); //失敗:轉對象 必須是 {} Person p1 = JSON.parseObject(s1, Person.class); System.out.println(p1); //失敗:轉對象 必須是 {} Person p2 = JSONObject.parseObject(s1, Person.class); System.out.println(p2); //失敗:轉對象 必須是 {} Person p3 = JSONArray.parseObject(s1, Person.class); System.out.println(p3); } @Test public void testparseArray(){ Person person = new Person("aa", 1); List<Person> list =new ArrayList<>(); list.add(person); String s1 = JSON.toJSONString(list); System.out.println(s1); List<Person> p1 = JSON.parseArray(s1, Person.class); System.out.println(p1); List<Person> p2 = JSONObject.parseArray(s1, Person.class); System.out.println(p2); List<Person> p3 = JSONArray.parseArray(s1, Person.class); System.out.println(p3); } }
/** * 非泛型示例 */ public class JSONObjectJsonTest { //數據是 對象 @Test public void testparseObject1(){ Person person = new Person("aa", 1); String s1 = JSON.toJSONString(person); System.out.println(s1); JSONObject p1 = JSON.parseObject(s1); System.out.println(p1); System.out.println(p1.getString("name")); JSONObject p2 = JSONObject.parseObject(s1); System.out.println(p2); JSONObject p3 = JSONArray.parseObject(s1); System.out.println(p3); } //數據是 對象 @Test public void testparseObject2(){ Person person = new Person("aa", 1); String s1 = JSON.toJSONString(person); System.out.println(s1); Object p1 = JSON.parse(s1); System.out.println(p1.getClass()); System.out.println(p1); Object p2 = JSONObject.parse(s1); System.out.println(p2.getClass()); System.out.println(p2); Object p3 = JSONArray.parse(s1); System.out.println(p3.getClass()); System.out.println(p3); } //數據是 數組 @Test public void testparseArray1(){ Person person = new Person("aa", 1); List<Person> list =new ArrayList<>(); list.add(person); String s1 = JSON.toJSONString(list); System.out.println(s1); JSONArray p1 = JSON.parseArray(s1); System.out.println(p1); JSONArray p2 = JSONObject.parseArray(s1); System.out.println(p2); JSONArray p3 = JSONArray.parseArray(s1); System.out.println(p3); } //數據是 數組 @Test public void testparseArray2(){ Person person = new Person("aa", 1); List<Person> list =new ArrayList<>(); list.add(person); String s1 = JSON.toJSONString(list); System.out.println(s1); JSONArray p1 = (JSONArray)JSON.parse(s1); System.out.println(p1.getClass()); System.out.println(p1); Object p2 = JSONObject.parse(s1); System.out.println(p2.getClass()); System.out.println(p2); Object p3 = JSONArray.parse(s1); System.out.println(p3.getClass()); System.out.println(p3); } }
public class JsonToLIstMapTest { String strArr = "[{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}," + "{\"00\":\"zhangsan\",\"11\":\"lisi\",\"22\":\"wangwu\",\"33\":\"maliu\"}]"; @Test public void test(){ //第一種方式 List<Map<String,String>> listObjectFir = (List<Map<String,String>>) JSONArray.parse(strArr); System.out.println("一、利用JSONArray中的parse方法來解析json數組字符串");//com.alibaba.fastjson.JSONObject System.out.println("類型:"+listObjectFir.get(0).getClass()); for(Map<String,String> mapList : listObjectFir){ for (Map.Entry entry : mapList.entrySet()){ System.out.println( entry.getKey() + " " +entry.getValue()); } } //第二種方式 List<Map<String,String>> listObjectSec = JSONArray.parseObject(strArr,List.class); System.out.println("二、利用JSONArray中的parseObject方法並指定返回類型來解析json數組字符串");//com.alibaba.fastjson.JSONObject System.out.println("類型:"+listObjectSec.get(0).getClass()); for(Map<String,String> mapList : listObjectSec){ for (Map.Entry entry : mapList.entrySet()){ System.out.println( entry.getKey() + " " +entry.getValue()); } } //第三種方式 JSONArray listObjectThir = JSONArray.parseArray(strArr); System.out.println("三、利用JSONArray中的parseArray方法來解析json數組字符串"); System.out.println("類型:"+listObjectThir.get(0).getClass());//com.alibaba.fastjson.JSONObject for(Object mapList : listObjectThir){ for (Object entry : ((Map)mapList).entrySet()){ System.out.println(((Map.Entry)entry).getKey() + " " +((Map.Entry)entry).getValue()); } } //第四種方式 List listObjectFour = JSONArray.parseArray(strArr,Map.class); System.out.println("四、利用JSONArray中的parseArray方法並指定返回類型來解析json數組字符串"); System.out.println("類型:"+listObjectFour.get(0).getClass());//java.util.HashMap for(Object mapList : listObjectFour){ for (Object entry : ((Map)mapList).entrySet()){ System.out.println(((Map.Entry)entry).getKey() + " " +((Map.Entry)entry).getValue()); } } //第五種方式 JSONArray listObjectFifth = JSONObject.parseArray(strArr); System.out.println("五、利用JSONObject中的parseArray方法來解析json數組字符串"); System.out.println("類型:"+listObjectFifth.get(0).getClass());//com.alibaba.fastjson.JSONObject for(Object mapList : listObjectFifth){ for (Object entry : ((Map)mapList).entrySet()){ System.out.println(((Map.Entry)entry).getKey() + " " +((Map.Entry)entry).getValue()); } } //第六種方式 List listObjectSix = JSONObject.parseArray(strArr,Map.class); System.out.println("六、利用JSONObject中的parseArray方法並指定返回類型來解析json數組字符串"); System.out.println("類型:"+listObjectSix.get(0).getClass());//java.util.HashMap for(Object mapList : listObjectSix){ for (Object entry : ((Map)mapList).entrySet()){ System.out.println(((Map.Entry)entry).getKey() + " " +((Map.Entry)entry).getValue()); } } //第七種方式 JSONArray listObjectSeven = JSON.parseArray(strArr); System.out.println("七、利用JSON中的parseArray方法來解析json數組字符串"); System.out.println("類型:"+listObjectSeven.get(0).getClass());//com.alibaba.fastjson.JSONObject for(Object mapList : listObjectSeven){ for (Object entry : ((Map)mapList).entrySet()){ System.out.println(((Map.Entry)entry).getKey() + " " +((Map.Entry)entry).getValue()); } } //第八種方式 List listObjectEigh = JSONObject.parseArray(strArr,Map.class); System.out.println("八、利用JSON中的parseArray方法並指定返回類型來解析json數組字符串"); System.out.println("類型:"+listObjectEigh.get(0).getClass());//java.util.HashMap for(Object mapList : listObjectEigh){ for (Object entry : ((Map)mapList).entrySet()){ System.out.println(((Map.Entry)entry).getKey() + " " +((Map.Entry)entry).getValue()); } } } }