java反序列化泛型中json对象

使用 jacksonobjectMapper 来实现

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;

public config class {

 private static ObjectMapper objectMapper;

    static {
        objectMapper=new ObjectMapper();
        //忽略反序列化中的一些错误
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    }

}

示例

要反序列化 JSON 中的泛型深层对象,你可以使用 JSON 库(如 Jackson 或 Gson)并结合 Java 的 TypeReference 类。以下是使用 Jackson 和 TypeReference 的示例代码:

假设你有一个 JSON 字符串如下,其中包含一个深层的泛型对象:

{
  "name": "John",
  "age": 30,
  "list": [
    {
      "name": "Alice",
      "age": 25
    },
    {
      "name": "Bob",
      "age": 35
    }
  ]
}

首先,你需要创建一个 Java 类来表示 JSON 的结构。假设你有一个名为 Person 的类:

public class Person {
    private String name;
    private int age;
    
    // 构造函数、Getter 和 Setter 略
}

然后,你可以创建一个泛型类来表示包含泛型对象的深层对象:

public class DeepObject<T> {
    private String name;
    private int age;
    private List<T> list;
    // 构造函数、Getter 和 Setter 略
}

接下来,你可以使用 Jackson 库和 TypeReference 将 JSON 字符串反序列化为 DeepObject 对象:

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Main {
    public static void main(String[] args) throws Exception {
        String json = "{\"name\":\"John\",\"age\":30,\"list\":[{\"name\":\"Alice\",\"age\":25},{\"name\":\"Bob\",\"age\":35}]}";
        
        ObjectMapper objectMapper = new ObjectMapper();
        DeepObject<Person> deepObject = objectMapper.readValue(json, new TypeReference<DeepObject<Person>>() {});
        
        System.out.println("Name: " + deepObject.getName());
        System.out.println("Age: " + deepObject.getAge());
        
        List<Person> list = deepObject.getList();
        for (Person person : list) {
            System.out.println("Person: " + person.getName() + ", " + person.getAge());
        }
    }
}

运行上述代码,你将会看到输出结果:

Name: John
Age: 30
Person: Alice, 25
Person: Bob, 35

这样,你就成功地反序列化了 JSON 中的泛型深层对象。

你可能感兴趣的:(java,java,json,windows)