011-JSON、JSONObject、JSONArray使用、JSON數組形式字符串轉換爲List>的8種方法

1、JSON數據格式

1.一、經常使用JSON數據格式

  一、對象方式: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。工具

1.二、JSON、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 +
                '}';
    }
}
View Code

 

1.2.一、數據是 對象 方式測試【parseObject】

/**
 * 數據是 對象 測試
 */
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);
    }
}
View Code

 

 

 

1.2.二、數據是 數組 方式測試【parseArray】

/**
 * 數據是 數組 測試
 */
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);
    }
}
View Code

 

 

 

1.2.三、非泛型示例【主要是parseObject、parseArray以及parse】

/**
 * 非泛型示例
 */
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);
    }
}
View Code

 

2、JSON數組形式字符串轉換爲List<Map<String,String>>的8種方法

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());
            }
        }
    }
}
相關文章
相關標籤/搜索