2016-10-12 75 views
1

在进行改造之前,我使用了抽气。为了设置我的pojo值,我使用optString和optInt从JSONObject响应中检索值。这将替换我的空字符串为空字符串,我不需要为相同的添加空检查。如何进行改造2。如何将retrofit2中的空字符串转换为空字符串?

例JSON:

{ 
company_name : null 
} 

POJO类

public class company implements Serializable{ 
@SerializedName("company_name") 
private String companyName; 

public String getCompanyName(){ 
return companyName; 
} 

public void setCompanyName(String companyName){ 
this.companyName = companyName; 
} 

字符串的companyName = getCompany(); 导致NullPointerException。

是否有任何方法将每个空字符串转换为空字符串,如optString。

回答

0

约这样;使用三元运算符是一样的if

public void setCompanyName(String value){ 
    this.companyName = (value==null ? "" : value); 
} 

或尝试用@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)注释的Jackson ConverterJsonParserUtil.toPojo(...)那么不应该有转嫁的任何NULL值 - 而二传手仍然会出错NULL值,除非正确消毒。

+0

是的,这是一个可能的解决方案,但我有很多的POJO,并在每POJO这样,每场耗时的任务String类型的适配器。我正在寻找更简单的方法来做同样的事情。 –

+0

@SakshiGupta更新了答案。 –

0

作出类似

public class StringAdapter extends TypeAdapter<String> { 
    public String read(JsonReader reader) throws IOException { 
     if (reader.peek() == JsonToken.NULL) { 
     reader.nextNull(); 
     //here is the point of interest 
     //instead of return null; 
     return ""; 
     } 
     return reader.nextString(); 

    } 
    public void write(JsonWriter writer, String value) throws IOException { 
     if (value == null) { 
     writer.nullValue(); 
     return; 
     } 
     writer.value(value); 
    } 
    } 

了解更多详情阅读this

相关问题