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 的对象,键入 Stringextra,键入 List<Object>.

此列表包含另一个对象(请注意,该对象由 {} 定义并由 [] 列出)。

列表中的对象还有另外两个属性:textcolor 都是原始类型; 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 中的值已创建并加载到内存中。