我正在尝试制作一个需要使用json的java程序,我选择了gson作为我的库来处理JSON的管理
但是,当我试图反序列化我的json时,messagereturn.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;
}
}
谢谢,如果还有什么需要的话,请告诉我,谢谢
1条答案
按热度按时间pgky5nke1#
理解JSON(顺便创建Java类)有个问题。这些标记
[]
表示这是一个列表。所以你有一个属性为
text
的对象,类型为String
和extra
,类型为List<Object>
。此列表包含另一个对象(请注意,对象由
{}
定义,列表由[]
定义)。进入列表的对象有另外两个属性:
text
和color
,两者都具有基元类型;String
.所以你的java类应该是这样的:
而类
Extra
:有了这个数据模型,你可以用这些结构调用你的
Gson
。同样,您不需要调用
returnMethod
来创建Extra
对象,它是由Gson
创建的。使用以下代码行:
在JSON示例中,这是在调试模式下运行时存储的值:
正如您所看到的,JSON中的值已经被创建并加载到内存中。