java - Gson 为什么我的反序列化不起作用?
问题描述
我正在尝试制作一个需要使用 json 的 java 程序,我选择 gson 作为我的库来处理管理 JSON
但是当我尝试反序列化我的 jsonmessagereturn.text
值和messagereturn.extra.text
值都设置为 null 时,我试图解决这个问题,但我无法解决。
我试图反序列化的 json 示例是
{
"text":"",
"extra":[{
"text":"eee joined the game",
"color":"yellow"
}]
}
这就是我如何称呼 gson
Message messagepacket = event.<ServerChatPacket>getPacket().getMessage();
//this gets the json data
messagereturn messagereturn = gson.fromJson(String.valueOf(messagepacket), messagereturn.class);
System.out.println(messagereturn.returnmethod());
这是我也试图反序列化的类
public class messagereturn {
String text;
public class extra{
String text;
}
public String returnmethod() {
extra extra = new extra();
return text + extra.text;
}
}
谢谢,如果需要更多信息,请告诉我,谢谢
解决方案
理解您的 JSON(以及顺便创建 Java 类)存在问题。这些标记[]
意味着这是一个列表。
所以你有一个具有属性text
、类型String
和extra
类型的对象List<Object>
。
该列表包含另一个对象(请注意,该对象由 定义并由{}
列出[]
)。
列表中的对象还有另外两个属性:text
并且color
都具有原始类型;String
.
所以你的java类应该是这样的:
public class Messagereturn {
private String text;
private List<Extra> extra;
//getters and setters and other methods
}
和班级Extra
:
public class Extra {
private String text;
private String color;
//getters and setters
}
使用此数据模型,您可以Gson
使用这些结构调用您的数据模型。
此外,您不需要调用returnMethod
创建Extra
对象,它是由Gson
.
使用这行代码:
Messagereturn mr = new Gson().fromJson(txt, Messagereturn.class);
而您的 JSON 示例,这是在调试模式下运行时存储的值:
如您所见,来自 JSON 的值已创建并加载到内存中。
推荐阅读
- sql-server - TSQL 运行总计
- indexing - 由于被 robots.tx 阻止,Mailchimp 登录页面无法在 Google Search Console 上编入索引
- python-3.x - 我找不到如何使用 selenium python 获取文本
- linux - 如何找到所有大于可变时间戳的错误日志?
- swift - 如何让 Swift 委托在 React Native iOS App 中工作
- javascript - 为什么正确读取请求时服务器响应不正确?
- angular - Angular HttpInterceptor - 参数类型不可分配
- c# - 每个线示踪剂
- verilog - 分段错误:使用 yosys 编译时出现 11
- python - 根据 pyspark 中另一个文件的值过滤巨型文件的行