Google Gson用法详解
发布日期:2021-05-14 17:36:12 浏览次数:20 分类:精选文章

本文共 5868 字,大约阅读时间需要 19 分钟。

Gson���������������Java���������JSON���������������

������

Gson���Google Gson���������������Google���������������Java������������������������Java������������������JSON������������������JSON���������������Java������������������������������������������������������������������������������������

������������

���������Gson������������������������������������������������Maven���Gradle������������������������������

Maven������

com.google.code.gson
2.8.5

Gradle������

compile group: 'com.google.code.gson', name: 'gson', version: '2.8.5'

������������

Gson������������������������Java���������JSON������������������������������������

1. ������Gson������

���������������������Gson���������

  • ������������Gson������

    Gson gson = new Gson();
  • ������GsonBuilder������������������

    GsonBuilder builder = new GsonBuilder();
    Gson gson = builder.create();
  • 2. Java���������JSON

    Gson���toJson()���������������Java������������������JSON������������

    public class Employee {
    private int id;
    private String firstName;
    private String lastName;
    private String email;
    public Employee(int id, String firstName, String lastName, String email) {
    this.id = id;
    this.firstName = firstName;
    this.lastName = lastName;
    this.email = email;
    }
    // Getter���Setter������������������������
    }
    Employee emp = new Employee(1001, "Lokesh", "Gupta", "howtodoinjava@gmail.com");
    Gson gson = new Gson();
    String json = gson.toJson(emp);

    3. JSON���Java������

    ������fromJson()���������������������������

    String json = "{\n" +
    "'id': 1001,\n" +
    "'firstName': 'Lokesh',\n" +
    "'lastName': 'Gupta',\n" +
    "'email': 'howtodoinjava@gmail.com'}";
    Gson gson = new Gson();
    Employee emp = gson.fromJson(json, Employee.class);

    4. JSON������������

    ���������������������Gson���������������������

    Gson gson = new GsonBuilder()
    .setPrettyPrinting()
    .create();
    String json = gson.toJson(emp);

    5. JSON���������Java������/list

    5.1 ���JSON���������������������Java������������

    String userJson = "[\n" +
    "{'name': 'Alex','id': 1},\n" +
    "{'name': 'Brian','id': 2},\n" +
    "{'name': 'Charles','id': 3}]\n";
    Gson gson = new Gson();
    User[] userArray = gson.fromJson(userJson, User[].class);

    5.2 ���JSON���������������Java������

    String userJson = "[\n" +
    "{'name': 'Alex','id': 1},\n" +
    "{'name': 'Brian','id': 2},\n" +
    "{'name': 'Charles','id': 3}]\n";
    java.lang.reflect.Type userListType = new TypeToken(ArrayList
    >() {}.getType();
    ArrayList
    userArray = gson.fromJson(userJson, userListType);

    6. JSON���Java������������

    6.1 HashSet���������

    Set
    userSet = new HashSet<>();
    userSet.add("Alex");
    userSet.add("Brian");
    userSet.add("Charles");
    String json = gson.toJson(userSet);

    6.2 JSON���������������HashSet

    String json = "['Alex','Brian','Charles','Alex']";
    Set
    userSet = gson.fromJson(json, new TypeToken
    >() {}.getType());

    Null���������

    ������������������Gson���������null������������������������������������������������GsonBuilder.serializeNulls()���

    Gson gson = new GsonBuilder()
    .serializeNulls()
    .create();

    ������������

    @Since������

    ������������������������������������������������������������

    @Since(1.2)
    private String email;

    ���������������Gson������

    Gson gson = new GsonBuilder()
    .setVersion(1.1)
    .create();

    ������������������

    Gson���������������������������������Java���������������JSON���������������

    ������������

  • IDENTITY������������������������������������������
  • LOWER_CASE_WITH_DASHES������������������������������������������������������������������
  • LOWER_CASE_WITH_DOTS������������������������������������������������������������
  • LOWER_CASE_WITH_UNDERSCORES������������������������������������������������������������������
  • UPPER_CAMEL_CASE������Java������������������������������������JSON���������������
  • UPPER_CAMEL_CASE_WITH_SPACES������������������������������������������������������������������
  • ������

    public class User {
    private int id;
    private String first_name;
    private String lastName;
    private String _email;
    }
    Gson gson = new GsonBuilder()
    .setFieldNamingPolicy(FieldNamingPolicy.IDENTITY)
    .create();

    ���������������������������������

    ������������������������

    ������JsonSerializer������������������������������������

    public class BooleanSerializer implements JsonSerializer
    {
    public JsonElement serialize(Boolean value, Type type, JsonSerializationContext ctx) {
    return value ? JsonPrimitive.TRUE : JsonPrimitive.FALSE;
    }
    }
    Gson gson = new GsonBuilder()
    .registerTypeAdapter(Boolean.class, new BooleanSerializer())
    .create();

    ���������������������������

    ������JsonDeserializer���������������������������������������

    public class EmployeeDeserializer implements JsonDeserializer
    {
    public Employee deserialize(JsonElement json, Type type, JsonDeserializationContext ctx) throws JsonParseException {
    JsonObject jsonObject = json.getAsJsonObject();
    LocalDate localDate = LocalDate.of(
    jsonObject.get("year").getAsInt(),
    jsonObject.get("month").getAsInt(),
    jsonObject.get("day").getAsInt()
    );
    return new Employee(
    jsonObject.get("id").getAsInt(),
    jsonObject.get("firstName").getAsString(),
    jsonObject.get("lastName").getAsString(),
    jsonObject.get("email").getAsString(),
    localDate
    );
    }
    }
    Gson gson = new GsonBuilder()
    .registerTypeAdapter(Employee.class, new EmployeeDeserializer())
    .create();

    ������

    Gson���������������������JSON������������������������������������������������������������������������������������������JSON���������������������������������������������������������������������������������������Gson���������������������������������������������������

    上一篇:org.apache.ibatis.binding.BindingException
    下一篇:SpringBoot打包之后乱码

    发表评论

    最新留言

    留言是一种美德,欢迎回访!
    [***.207.175.100]2025年04月17日 08时31分58秒