gpt4 book ai didi

java - gson:根据类型参数化 fromJson

转载 作者:太空宇宙 更新时间:2023-11-04 08:10:38 25 4
gpt4 key购买 nike

很抱歉,肯定已经有人问过了,但我没有找到我需要的东西
我有几种消息类型:

class AbstractMessage {
int code;
String token;
}

class ShareMessage extends AbstractMessage{
String user;
Map<String, String> friends;
}

class PostMessage extends AbstractMessage{
String user;
Map<String, String> data;
}

以及从 json post 消息中解码它们的方法:

public Object getMessage(BufferedReader r, Type t){
Object o = null;
try{
o = g.fromJson(r, t);
} catch (final JsonSyntaxException e) {
LOGGER.info("Error in Json format", e);
} catch (final JsonParseException e) {
LOGGER.info("Error in parsing Json", e);
}

return o;
}

那么例如:

Type dataType = new TypeToken<PostMessage>() {}.getType();
PostMessage m = (PostMessage) getMessage(request.getReader(), dataType);

可以工作,但是很难看,我怎样才能有一个参数化的 getMessage 函数,或者比返回对象和转换更好的东西
谢谢

最佳答案

添加<T>到方法签名,紧接在返回类型之前。这将创建一个类型参数化方法:

public <T> T getMessage(BufferedReader r, TypeToken<T> typeToken){
try {
return g.fromJson(r, typeToken.getType());
} catch (final JsonSyntaxException e) {
LOGGER.info("Error in Json format", e);
} catch (final JsonParseException e) {
LOGGER.info("Error in parsing Json", e);
}
return null;
}

这样调用它:

PostMessage m = getMessage(request.getReader(), new TypeToken<PostMessage>() {});

关于java - gson:根据类型参数化 fromJson,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11280837/

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