gpt4 book ai didi

java - 以 Json 形式对 进行通用响应

转载 作者:行者123 更新时间:2023-11-30 05:31:24 26 4
gpt4 key购买 nike

我正在努力反序列化由通用结果结构包装的 JSON 对象:

来自服务器的我的 JSON:

{
"totalsize": 5,
"data" : [
{"name":1},
{"name":2}
]
}

结果中我的 Java 对象:

public class ResponseTo<T> {

public Long totalsize = null;
public final List<T> data = new ArrayList<>();
}

在本例中(可能是另一个 GET 请求上的其他内容)

public class Item {
public int name;
}

在本例中,T 是一个 Item

如何使用以下方法将 JSON 负载反序列化到此对象结构中:
GSON 和/或 com.fasterxml.jackson

我想要一个静态方法,例如:

public static <T> ResponseTo<T> stringToObject(String jsonString, Class<T> clazz ) {
final Gson gson = new Gson();
// do some typeadapter function magic
return gson.fromJson( jsonString, ResponseTo.class );
}

它被调用

ResponseTo<Item> responseTo = stringToObject( <json-string>, Item.class );

我仅接收 com.google.gson.internal.LinkedTreeMap 作为数据对象。

我该怎么做才能让它发挥作用? - 我的做法是错误的吗?

最佳答案

您需要使用类型 token 来处理一般情况,因为 T 的类型信息会被Java编译器删除,Gson不知道要恢复什么类型T到。

Type typeToken = new TypeToken<ResponseTo<Item>>() { }.getType();
ResponseTo<Item> responseTo = stringToObject( <json-string>, typeToken );

关于java - 以 Json 形式对 <T> 进行通用响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57460654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com