【问题标题】:Deserialization got null String should have value反序列化得到空字符串应该有值
【发布时间】:2016-02-02 21:16:11
【问题描述】:

我遇到了一个很奇怪的问题,如果它变成了注意力问题,请原谅我,但我现在正在喝咖啡!

我有这个 Json:

[  
   {  
      "address":"RS 239, Km 18,2 nº 4631 - Novo Hamburgo",
      "closingTime":"06:00",
      "description":"Curta como quiser.",
      "distance":"6,328.35 km",
      "iconUrl":"~\/Images\/Establishment\/Bar Alternativo.png",
      "idEstablishment":5,
      "name":"Bar Alternativo",
      "openingTime":"22:30",
      "phone":"(51) 3778-1820",
      "type":"Casa Noturna \/ Balada"
   }
]

当我尝试使用这段代码反序列化这个时:

public static ArrayList<Establishment> serializeEstablishmentList(String json) {
    ObjectMapper mapper = new ObjectMapper();

    ArrayList<Establishment> establishments = null;

    try {
        establishments = mapper.readValue(json, new TypeReference<List<Establishment>>(){});
    } catch (IOException e) {
        e.printStackTrace();
    }

    return establishments;
}

我的distance 属性没有得到它的值,来自调试器的图像:

这是我的建立课程:

public class Establishment {

    private long idEstablishment;
    private Drawable icon;
    private String iconUrl;
    private String name;
    private String type;
    private boolean workingStatus;
    private String openingTime;
    private String closingTime;
    private String distance;
    private String phone;
    private String description;
    private String address;

    public Establishment() {
    }

    public Establishment(long idEstablishment, Drawable icon, String iconUrl, String name, String type, boolean workingStatus, String openingTime, String closingTime, String distance, String phone, String description, String address) {
        this.idEstablishment = idEstablishment;
        this.icon = icon;
        this.iconUrl = iconUrl;
        this.name = name;
        this.type = type;
        this.workingStatus = workingStatus;
        this.openingTime = openingTime;
        this.closingTime = closingTime;
        this.distance = distance;
        this.phone = phone;
        this.description = description;
        this.address = address;
    }

    public Establishment(long id, Drawable icon, String name, boolean workingStatus, String openingTime,
                         String closingTime, String distance) {
        this.idEstablishment = id;
        this.icon = icon;
        this.name = name;
        this.workingStatus = workingStatus;
        this.openingTime = openingTime;
        this.closingTime = closingTime;
        this.distance = distance;
    }

    public long getIdEstablishment() {
        return idEstablishment;
    }

    public void setIdEstablishment(long idEstablishment) {
        this.idEstablishment = idEstablishment;
    }

    public Drawable getIcon() {
        return icon;
    }

    public void setIcon(Drawable icon) {
        this.icon = icon;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean getWorkingStatus() {
        return workingStatus;
    }

    public String getWorkingStatusLabel(){
        return workingStatus ? "Aberto" : "Fechado";
    }

    public void setWorkingStatus(boolean workingStatus) {
        this.workingStatus = workingStatus;
    }

    public String getOpeningTime() {
        return openingTime;
    }

    public void setOpeningTime(String openingTime) {
        this.openingTime = openingTime;
    }

    public String getClosingTime() {
        return closingTime;
    }

    public void setClosingTime(String closingTime) {
        this.closingTime = closingTime;
    }

    public String getDistance() {
        return distance;
    }

    public void setDistance(String distance) {
        this.distance = this.distance;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public boolean isWorkingStatus() {
        return workingStatus;
    }

    public String getIconUrl() {
        return iconUrl;
    }

    public void setIconUrl(String iconUrl) {
        this.iconUrl = iconUrl;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

有什么想法吗?

【问题讨论】:

  • public void setDistance(String distance) { this.distance = this.distance; } 别再看了。使用 IDE 会有所帮助;)。
  • @Tunaki 你太棒了,就像我说的,我正在喝咖啡,这是一个注意力问题,非常感谢。我要去呼吸新鲜空气了。
  • Eclipse 弹出“对可变距离的赋值无效”警告。不能错过。你没有使用 IDE 吗?
  • Android Studio 没有警告我:/
  • 嗯,你应该看看设置。也许你可以配置它来警告更多这样的事情。无论如何,很高兴它解决了:)

标签: java json serialization deserialization


【解决方案1】:

你的setter方法不对:

public void setDistance(String distance) {
    this.distance = this.distance;
}

这应该是:

public void setDistance(String distance) {
    this.distance = distance;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 2023-03-04
    • 2016-12-22
    相关资源
    最近更新 更多