Gson对java对象和json字符串互相转换

pom文件:

1
2
3
4
5
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>

Gson相比org.json最大的好处是从json字符串转向java实例时候少了依据每个实例自己赋值的过程,比如在org.json的时候,我们先从json字符串构建一个jsonobject,然后用各种的json get方法获取到每个字段的值,这是一个体力活。而gson依据反射机制我们只要传递我们要实例化的类型class进去返回就是创建好的实例。大大减少了代码量。

java转json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import java.util.List;
import java.util.Map;
import com.google.gson.Gson;
import gson.demo.javabean.Person;

public class ObjectToJson {

    /**
     * javabean to json
     *
     * @param person
     * @return
     */

    public static String javabeanToJson(Person person) {
        Gson gson = new Gson();
        String json = gson.toJson(person);
        return json;
    }

    /**
     * list to json
     *
     * @param list
     * @return
     */

    public static String listToJson(List<Person> list) {

        Gson gson = new Gson();
        String json = gson.toJson(list);
        return json;
    }

    /**
     * map to json
     *
     * @param map
     * @return
     */

    public static String mapToJson(Map<String, Person> map) {

        Gson gson = new Gson();
        String json = gson.toJson(map);
        return json;
    }
}

Json转java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import java.util.List;
import java.util.Map;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import gson.demo.javabean.Person;

public class JsonToObject {

    /**
     * json to javabean
     *
     * @param json
     */

    public static void jsonToJavaBean(String json) {
        Gson gson = new Gson();
        Person person = gson.fromJson(json, Person.class);//对于javabean直接给出class实例
        System.out.println(person.toString());
    }

    /**
     * json字符串转List集合
     */


    public static void jsonToList(String json) {

        Gson gson = new Gson();
        List<Person> persons = gson.fromJson(json, new TypeToken<List<Person>>() {
        }.getType());//对于不是类的情况,用这个参数给出
        for (Person person : persons) {
            System.out.println(person);
        }
    }

    public static void jsonToMap(String json) {
        // TODO Auto-generated method stub
        Gson gson = new Gson();
        Map<String, Person> maps = gson.fromJson(json, new TypeToken<Map<String, Person>>() {
        }.getType());
        for (Map.Entry<String, Person> entry : maps.entrySet()) {
            System.out.println("key: " + entry.getKey() + "  " + "value: " + entry.getValue());

        }
    }
}
ˆ Back To Top