Java Gson:使用 Gson#fromJson 将JSON字符串反序列化为对象


#Java Gson#


使用示例

将 JSON 字符串反序列化为对象

package org.example;

import com.google.gson.Gson;
import lombok.Data;

public class Main {

    @Data
    public static class UserInfo {
        private String name;
    }

    public static void main(String[] args) {
        String jsonStr = "{\"name\":\"李白\"}";
        Gson gson = new Gson();
        UserInfo userInfo = gson.fromJson(jsonStr, UserInfo.class);
        System.out.println(userInfo);
    }

}

执行结果:

Main.UserInfo(name=李白)

使用 TypeToken 将 JSON 字符串反序列化为含有泛型变量的 List 对象

package org.example;

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

import java.util.List;

public class Main {

    public static void main(String[] args) {
        TypeToken typeToken = new TypeToken<List<Long>>(){};
        Gson gson = new Gson();
        List<Long> list = gson.fromJson("[1,2,34]", typeToken.getType());
        System.out.println("list: " + list);
    }

}

执行结果:

list: [1, 2, 34]

使用 TypeToken 将 JSON 字符串反序列化为含有泛型变量的对象

package org.example;

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

public class Main {
    @Data
    public static class UserInfo {
        private String name;
    }

    @Data
    public static class DataHolder<T> {
        private T data;
    }

    public static void main(String[] args) {
        TypeToken typeToken = new TypeToken<DataHolder<Long>>(){};
        Gson gson = new Gson();
        DataHolder<Long> result = gson.fromJson("{\"data\": 123}", typeToken.getType());
        System.out.println("result: " + result);
    }

}

执行结果:

result: Main.DataHolder(data=123)

( 本文完 )