Json是一种轻量级的数据交换格局, 其语法格局非常简单

对象:{key : value, key: value...}
数组:[元素1, 元素2 ...]

在平时的开发中,咱们都须要应用Json在前后端之间进行数据交换,这里咱们次要来看一下Java最方便快捷的解析Json的形式

  1. 谷歌Gson
    将对象转为Json
    String toJson(Object src)

    将json转为对象
    <T> T fromJson(String json, Class<T> classOfT)

    将json转为汇合
    <T> T fromJson(String json, Type typeOfT)

    代码示例:

   /**     * 将对象转换为json     * @param o     * @return     */    public static String getJsonString(Object o){        return new Gson().toJson(o);    }    /**     * 将json转为对象     * @param jsonString     * @param clazz     * @return     */    public static Object getObjectFromJson(String jsonString, Class<?> clazz){        return new Gson().fromJson(jsonString, clazz);    }    /**     * 将json转为汇合     * @param jsonString     * @param type     * @return     */    public static Object getObjectFromJson(String jsonString, Type type){        return new Gson().fromJson(jsonString, type);    }    public static void main(String[] args) {          // 对象转json        String objectJson = getJsonString(new Student(18, "jason"));         //后果:{"age":18,"name":"jason"}        System.out.println(objectJson);                // json转对象          Student student = (Student) getObjectFromJson("{\"age\":18,\"name\":\"jason\"}", Student.class);          //后果:Student{age=18, name='jason'}        System.out.println(student);                // List          List<Student> list = new ArrayList<>();        list.add(new Student(18, "jason"));        list.add(new Student(19, "lee"));          // 汇合转json        String listJson = getJsonString(list);         //后果:[{"age":18,"name":"jason"},    {"age":19,"name":"lee"}]        System.out.println(listJson);                    // Json转List        Type type = new TypeToken<ArrayList<Student>>() {        }.getType();        ArrayList<Student> arrayList = (ArrayList<Student>) getObjectFromJson(listJson,           type);          // 后果:[Student{age=18, name='jason'}, Student{age=19, name='lee'}]        System.out.println(arrayList.toString());                      // HashMap          HashMap<String, String> hashMap = new HashMap<>();        hashMap.put("name", "jason");        hashMap.put("age", "18");                // HashMap转json        String mapJson = getJsonString(hashMap);        // 后果:{"name":"jason","age":"18"}        System.out.println(mapJson);        // json转HashMap        Type mapType = new TypeToken<HashMap<String, String>>() {}.getType();        HashMap<String, String> map = (HashMap<String, String>) getObjectFromJson(mapJson, mapType);                  /**         * 后果         * key:name, value:jason         * key:age, value:18         */        for (Map.Entry<String, String> entry : map.entrySet()){            System.out.println("key:" + entry.getKey() + ", value:" + entry.getValue());        }    }
  1. 阿里FastJson
    对象转json
    static String toJSONString(Object object)

    json转对象
    static <T> T parseObject(String text, Class<T> clazz)

    json转List
    static <T> List<T> parseArray(String text, Class<T> clazz)

    json转Map
    static <T> T parseObject(String text, TypeReference<T> type, Feature... features)

    代码示例:

/** * 对象转json * @param o * @return */public static String getJsonString(Object o){    return JSON.toJSONString(o);}/** * json转对象 * @param jsonString * @param clazz * @return */public static Object getObjectFromJson(String jsonString, Class<?> clazz){    return JSON.parseObject(jsonString, clazz);}/** * json转list * @param jsonString * @param clazz * @return */public static Object getArrayFromJson(String jsonString, Class<?> clazz){    return JSON.parseArray(jsonString, clazz);}/** * json转map * @param jsonString * @param typeReference * @return */public static Object getMapFromJson(String jsonString, TypeReference<?> typeReference){    return JSON.parseObject(jsonString, typeReference);}public static void main(String[] args) {        // 对象转json        String objectJson = getJsonString(new Student(18, "jason"));        //后果:{"age":18,"name":"jason"}        System.out.println(objectJson);        // json转对象        Student student = (Student) getObjectFromJson(objectJson, Student.class);        // 后果:Student{age=18, name='jason'}        System.out.println(student);        // List        List<Student> list = new ArrayList<>();        list.add(new Student(18, "jason"));        list.add(new Student(19, "lee"));        // List转json        String listJson = getJsonString(list);        //后果:[{"age":18,"name":"jason"},{"age":19,"name":"lee"}]        System.out.println(listJson);        // json转List        List<Student> students = (List<Student>) getArrayFromJson(listJson, Student.class);        // 后果:[Student{age=18, name='jason'}, Student{age=19, name='lee'}]        System.out.println(students.toString());              // Map        HashMap<String, String> hashMap = new HashMap<>();        hashMap.put("name", "jason");        hashMap.put("age", "18");        // Map转json        String mapJson = getJsonString(hashMap);        // 后果:{"name":"jason","age":"18"}        System.out.println(mapJson);        // json转HashMap        TypeReference<HashMap<String, String>> typeReference = new TypeReference<HashMap<String, String>>() {};        HashMap<String, String> map = (HashMap<String, String>) getMapFromJson(mapJson, typeReference);        /**         * 后果         * key:name, value:jason         * key:age, value:18         */        for (Map.Entry<String, String> entry : map.entrySet()){            System.out.println("key:" + entry.getKey() + ", value:" + entry.getValue());        }}