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

时间:2014-04-04 14:13:18

标签: android gson

我从我的服务器上找到一个Json-String:

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

当我打电话

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

布尔值始终为false ...

我做错了什么?

这是我的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;
    }


}

2 个答案:

答案 0 :(得分:3)

因为布尔字段的正确名称是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")注释

答案 1 :(得分:1)

json字符串中密钥“erfolgreich”的名称应与类数据成员“isErfolgreich”相同,或者在定义成员之前应使用@SerializedName表示法。如果gson在类成员和json键之间不匹配,则使用该成员类型的默认值。所以你可以使用nikis解决方案,或者你可以使用这样的符号:

@SerializedName("erfolgreich")
private boolean isErfolgreich;