2014-09-24 126 views
-4

E.g.检查java中是否存在对象属性

[{ 
    'name': 'Foo', 
    'distance': 2 
},{ 
    'name': 'Bar' 
}] 

这将解析到这个类的对象的列表:

class City { 
    public String name; 
    public int distance; 
} 

不过对于酒吧我市对象不会有距离属性。我可以检查类型,如我将检查对象吗?如:

if(city.distance) 

如何检查距离是否设置?

+0

''如果 – 2014-09-24 12:39:11

+1

嗯...这取决于解析器......如果解析器决定将距离设置为0 ......但我怀疑它会成功地产生一个'int'' null'。 – 2014-09-24 12:39:43

+0

@dystroy像我说的那样,解析器不会将它设置为0. – 2014-09-24 12:40:08

回答

2
Gson gson = new Gson();  
City city = gson.fromJson(json, City.class); 

Custom parse classes are allowed with GSON。只需使用Integer而不是int并检查空值。

请记住,你必须创建一个City类与空的构造函数:(!距离= NULL)

public class City { 

    public Integer distance; 
    public String name; 

    public City() {/*void constructor*/} 

    public Integer getDistance() { 
     return distance; 
    } 
    public void setDistance(Integer distance) { 
     this.distance = distance; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
} 

检查null使用city.getDistance()==null

+0

+1谢谢你,试过这个,它的工作原理! – 2014-09-24 12:53:39

0

您可以使用Integer而不是int,并检查它是否为null。对于其他属性也可以做到这一点,使用类而不是原始类型。