使用GSON将JSON转换为Java对象

x33g5p2x  于2022-10-07 转载在 Java  
字(5.5k)|赞(0)|评价(0)|浏览(640)

在这篇文章中,我们将创建一个例子,使用GSON library将JSON表示法转换为Java对象。
Gson是一个Java库,可用于将Java对象转换为其JSON表示。它也可以用来将JSON字符串转换为一个等价的Java对象。Gson可以处理任意的Java对象,包括你没有源代码的已有的对象。在这个例子中,我们将向你展示如何使用GSON将Java对象序列化为JSON。请看使用GSON将Java对象转换成JSON。

Gson的Maven依赖

要在Maven2/3中使用Gson,你可以通过添加以下依赖项来使用Maven Central中的Gson版本。

<dependencies>
    <!--  Gson: Java to Json conversion -->
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.8.5</version>
      <scope>compile</scope>
    </dependency>
</dependencies>

学生POJO类--要被反序列化的对象

让我们创建Student类,我们将使用GSON将JSON表示法反序列化为这个Student Java对象。

class Student {

    private long studentId;
    private String studentName;
    private Set < Phone > studentPhoneNumbers = new HashSet < Phone > (0);

    public long getStudentId() {
        return studentId;
    }

    public void setStudentId(long studentId) {
        this.studentId = studentId;
    }

    public String getStudentName() {
        return studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    public Set < Phone > getStudentPhoneNumbers() {
        return studentPhoneNumbers;
    }

    public void setStudentPhoneNumbers(Set < Phone > studentPhoneNumbers) {
        this.studentPhoneNumbers = studentPhoneNumbers;
    }

    @Override
    public String toString() {
        return "Student [studentId=" + studentId + ", studentName=" + studentName + ", studentPhoneNumbers=" +
            studentPhoneNumbers + "]";
    }

}

class Phone {

    private long phoneId;
    private String phoneType;
    private String phoneNumber;

    public Phone() {}

    public Phone(String phoneType, String phoneNumber) {
        this.phoneType = phoneType;
        this.phoneNumber = phoneNumber;
    }

    public long getPhoneId() {
        return phoneId;
    }

    public void setPhoneId(long phoneId) {
        this.phoneId = phoneId;
    }

    public String getPhoneType() {
        return phoneType;
    }

    public void setPhoneType(String phoneType) {
        this.phoneType = phoneType;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }
}

使用GSON对JSON进行反序列化或转换为Java对象

package net.javaguides.gson;

import java.util.HashSet;
import java.util.Set;

import com.google.gson.Gson;

/**
* 
* @author Ramesh Fadatare
*
*/
public class GSONComplexObjectExample {
    public static void main(String[] args) {
        deserializeUserObject();
    }

    private static void deserializeUserObject() {
        Gson gson = new Gson();
        String jsonStr = "{\r\n" +
            "  \"studentId\": 1000,\r\n" +
            "  \"studentName\": \"Ramesh\",\r\n" +
            "  \"studentPhoneNumbers\": [\r\n" +
            "    {\r\n" +
            "      \"phoneId\": 100,\r\n" +
            "      \"phoneType\": \"Mobile Phone\",\r\n" +
            "      \"phoneNumber\": \"1234567890\"\r\n" +
            "    },\r\n" +
            "    {\r\n" +
            "      \"phoneId\": 101,\r\n" +
            "      \"phoneType\": \"Landline Phone\",\r\n" +
            "      \"phoneNumber\": \"2222 3333 44\"\r\n" +
            "    }\r\n" +
            "  ]\r\n" +
            "}";
        Student student = gson.fromJson(jsonStr, Student.class);
        System.out.println(student.toString());
    }
}

输出

Student [studentId=1000, studentName=Ramesh, studentPhoneNumbers=[net.javaguides.gson.Phone@5ce65a89, net.javaguides.gson.Phone@25f38edc]]

完整的例子供参考

package net.javaguides.gson;

import java.util.HashSet;
import java.util.Set;

import com.google.gson.Gson;

/**
* 
* @author Ramesh Fadatare
*
*/
public class GSONComplexObjectExample {
    public static void main(String[] args) {
        deserializeUserObject();
    }

    private static void deserializeUserObject() {
        Gson gson = new Gson();
        String jsonStr = "{\r\n" +
            "  \"studentId\": 1000,\r\n" +
            "  \"studentName\": \"Ramesh\",\r\n" +
            "  \"studentPhoneNumbers\": [\r\n" +
            "    {\r\n" +
            "      \"phoneId\": 100,\r\n" +
            "      \"phoneType\": \"Mobile Phone\",\r\n" +
            "      \"phoneNumber\": \"1234567890\"\r\n" +
            "    },\r\n" +
            "    {\r\n" +
            "      \"phoneId\": 101,\r\n" +
            "      \"phoneType\": \"Landline Phone\",\r\n" +
            "      \"phoneNumber\": \"2222 3333 44\"\r\n" +
            "    }\r\n" +
            "  ]\r\n" +
            "}";
        Student student = gson.fromJson(jsonStr, Student.class);
        System.out.println(student.toString());
    }
}

class Student {

    private long studentId;
    private String studentName;
    private Set < Phone > studentPhoneNumbers = new HashSet < Phone > (0);

    public long getStudentId() {
        return studentId;
    }

    public void setStudentId(long studentId) {
        this.studentId = studentId;
    }

    public String getStudentName() {
        return studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    public Set < Phone > getStudentPhoneNumbers() {
        return studentPhoneNumbers;
    }

    public void setStudentPhoneNumbers(Set < Phone > studentPhoneNumbers) {
        this.studentPhoneNumbers = studentPhoneNumbers;
    }

    @Override
    public String toString() {
        return "Student [studentId=" + studentId + ", studentName=" + studentName + ", studentPhoneNumbers=" +
            studentPhoneNumbers + "]";
    }

}

class Phone {

    private long phoneId;
    private String phoneType;
    private String phoneNumber;

    public Phone() {}

    public Phone(String phoneType, String phoneNumber) {
        this.phoneType = phoneType;
        this.phoneNumber = phoneNumber;
    }

    public long getPhoneId() {
        return phoneId;
    }

    public void setPhoneId(long phoneId) {
        this.phoneId = phoneId;
    }

    public String getPhoneType() {
        return phoneType;
    }

    public void setPhoneType(String phoneType) {
        this.phoneType = phoneType;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }
}

输出

Student [studentId=1000, studentName=Ramesh, studentPhoneNumbers=[net.javaguides.gson.Phone@5ce65a89, net.javaguides.gson.Phone@25f38edc]]

相关文章

微信公众号

最新文章

更多