Java对象类转JSON

在Java中,我们经常需要将对象转换为JSON格式,以便于传输、持久化或其他处理。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写。本文将介绍如何将Java对象类转换为JSON,并提供示例代码。

什么是JSON

JSON是一种用于数据交换的文本格式,它由键值对构成,并使用大括号{}包围,键值对之间使用逗号分隔。一个简单的JSON对象示例如下:

{
  "name": "John",
  "age": 30,
  "city": "New York"
}

在Java中,我们可以使用一些库(如Gson、Jackson等)来将Java对象转换为JSON格式。

使用Gson库将Java对象转换为JSON

Gson是Google提供的一个Java库,用于处理JSON数据的转换。下面是使用Gson库将Java对象转换为JSON的示例代码:

import com.google.gson.Gson;

public class Person {
  private String name;
  private int age;
  private String city;

  // getters and setters

  public static void main(String[] args) {
    Person person = new Person();
    person.setName("John");
    person.setAge(30);
    person.setCity("New York");

    Gson gson = new Gson();
    String json = gson.toJson(person);

    System.out.println(json);
  }
}

在上面的示例中,我们创建了一个名为Person的类,该类具有name、age和city属性。我们使用Gson类的toJson方法将person对象转换为JSON字符串,并通过System.out.println输出结果。

JSON转换为Java对象类

除了将Java对象转换为JSON,我们还可以将JSON转换回Java对象。下面是使用Gson库将JSON转换为Java对象的示例代码:

import com.google.gson.Gson;

public class Person {
  private String name;
  private int age;
  private String city;

  // getters and setters

  public static void main(String[] args) {
    String json = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}";

    Gson gson = new Gson();
    Person person = gson.fromJson(json, Person.class);

    System.out.println(person.getName());
    System.out.println(person.getAge());
    System.out.println(person.getCity());
  }
}

在上面的示例中,我们使用fromJson方法将JSON字符串转换为Person对象,并通过相应的getter方法获取其属性值。

Gson库的高级用法

Gson库还提供了一些高级用法,例如处理嵌套对象、日期时间格式化、自定义序列化和反序列化等等。下面是一些常用的高级用法示例:

处理嵌套对象
public class Address {
  private String street;
  private String city;

  // getters and setters
}

public class Person {
  private String name;
  private int age;
  private Address address;

  // getters and setters
}

public static void main(String[] args) {
  Address address = new Address();
  address.setStreet("123 Main St");
  address.setCity("New York");

  Person person = new Person();
  person.setName("John");
  person.setAge(30);
  person.setAddress(address);

  Gson gson = new Gson();
  String json = gson.toJson(person);

  System.out.println(json);
}
日期时间格式化
import java.util.Date;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class Person {
  private String name;
  private Date birthDate;

  // getters and setters

  public static void main(String[] args) {
    Person person = new Person();
    person.setName("John");
    person.setBirthDate(new Date());

    Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
    String json = gson.toJson(person);

    System.out.println(json);
  }
}
自定义序列化和反序列化
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;

public class Person {
  private String name;
  private int age;

  // getters and setters

  public static void main(String[] args) {
    Person person = new Person();
    person.setName("John");
    person.setAge(30);

    GsonBuilder gsonBuilder = new GsonBuilder();
    gsonBuilder.registerTypeAdapter(Person.class, new PersonSerializer());
    Gson gson = gsonBuilder.create();

    String json = gson.toJson(person);

    System.out.println(json);
  }
}

class PersonSerializer implements JsonSerializer