我正在尝试制作一个需要使用json的java程序,我选择gson作为我的库来处理json的管理
但是,当我尝试反序列化我的json时,messagereturn.text值和extra.text值都被设置为null,我已经尝试解决这个问题,但是我无法解决。
我试图反序列化的json的一个例子是
{
"text":"",
"extra":[{
"text":"eee joined the game",
"color":"yellow"
}]
}
我就是这么叫格森的
Message messagepacket = event.<ServerChatPacket>getPacket().getMessage();
Messagereturn mr = new Gson().fromJson(String.valueOf(messagepacket), Messagereturn.class);
System.out.println(mr.returnmethod());
下面是我试图反序列化的类
消息返回.java
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import java.util.List;
public class Messagereturn {
@SerializedName("text")
@Expose
private String text;
@SerializedName("extra")
@Expose
private List<Extra> extra = null;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public List<Extra> getExtra() {
return extra;
}
public void setExtra(List<Extra> extra) {
this.extra = extra;
}
public String returnmethod() {
Extra extra = new Extra();
return getText() + extra.getText();
}
}
额外.java
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Extra {
@SerializedName("text")
@Expose
private String text;
@SerializedName("color")
@Expose
private String color;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
1条答案
按热度按时间ibrsph3r1#
第一个错误:
String.valueOf(…)
返回tostring方法的值。因为没有重写它,所以调用gson将对象引用解析为json—这是错误的。相反,类消息应该返回负载本身。这可能是一个字节数组或已经是一个字符串。后者更好,这样您就不会遇到字符集问题。也许应该是这样的:第二个错误是我们的方法
public String returnmethod()
. 代码创建一个新的extra示例,所有属性都根据java语言规范初始化。在你的例子中:所有都是空的。我猜你的意思是: