Gson 为什么我的反序列化不起作用?
Gson why does my deserialization not work?
我正在尝试制作一个需要与 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());
这是 class 我也在尝试反序列化
public class messagereturn {
String text;
public class extra{
String text;
}
public String returnmethod() {
extra extra = new extra();
return text + extra.text;
}
}
谢谢,如果需要更多信息,请告诉我,谢谢
理解您的 JSON(顺便创建 Java classes)有问题。这些标记 []
表示这是一个列表。
因此您有一个具有属性 text
的对象,键入 String
和 extra
,键入 List<Object>
.
此列表包含另一个对象(请注意,该对象由 {}
定义并由 []
列出)。
列表中的对象还有另外两个属性:text
和 color
都是原始类型; String
.
所以你的 java class 应该是这样的:
public class Messagereturn {
private String text;
private List<Extra> extra;
//getters and setters and other methods
}
和 class 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 中的值已创建并加载到内存中。
我正在尝试制作一个需要与 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());
这是 class 我也在尝试反序列化
public class messagereturn {
String text;
public class extra{
String text;
}
public String returnmethod() {
extra extra = new extra();
return text + extra.text;
}
}
谢谢,如果需要更多信息,请告诉我,谢谢
理解您的 JSON(顺便创建 Java classes)有问题。这些标记 []
表示这是一个列表。
因此您有一个具有属性 text
的对象,键入 String
和 extra
,键入 List<Object>
.
此列表包含另一个对象(请注意,该对象由 {}
定义并由 []
列出)。
列表中的对象还有另外两个属性:text
和 color
都是原始类型; String
.
所以你的 java class 应该是这样的:
public class Messagereturn {
private String text;
private List<Extra> extra;
//getters and setters and other methods
}
和 class 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 中的值已创建并加载到内存中。