使用 Gson 将字符串解析为对象.布尔值始终为假



我从我的服务器中获取了一个 Json-String:

{"erfolgreich":"true","id":"14"}

当我打电话时

//result is the string above
msgServer = gson.fromJson(result, MsgSpielerErstellenSA.class);

布尔值总是假的...

我做错了什么?

这是我的MsgSpielerErstellenSA

public class MsgSpielerErstellenSA {
    private long id;
    private boolean isErfolgreich;
    public MsgSpielerErstellenSA(long id, boolean isErfolgreich) {
        super();
        this.id = id;
        this.isErfolgreich = isErfolgreich;
    }

    public boolean isErfolgreich() {
        return isErfolgreich;
    }
    public void setErfolgreich(boolean isErfolgreich) {
        this.isErfolgreich = isErfolgreich;
    }
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }

}

因为布尔字段的正确名称是 erfolgreich ,而不是 isErfolgreich 。请使用以下类:

public class MsgSpielerErstellenSA {
    private long id;
    private boolean erfolgreich;
    public MsgSpielerErstellenSA(long id, boolean isErfolgreich) {
        this.id = id;
        this.erfolgreich = isErfolgreich;
    }

    public boolean isErfolgreich() {
        return erfolgreich;
    }
    public void setErfolgreich(boolean isErfolgreich) {
        this.erfolgreich = isErfolgreich;
    }
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
}

但是,如果您不想重命名此字段,则可以在其上使用@SerializedName("erfolgreich")注释

json 字符串中键 "erfolgreich" 的名称应与类数据成员 "isErfolgreich" 相同,或者应在定义成员之前使用@SerializedName表示法。 如果 gson 无法在类成员和 JSON 键之间匹配,则使用该成员类型的默认值。 因此,您可以使用 Nikis 解决方案,也可以使用如下表示法:

@SerializedName("erfolgreich")
private boolean isErfolgreich;

最新更新