2016-10-12 8 views
1

retrofit2に移動する前に、私はボレーを使用していました。私のpojo値を設定するために、私はoptStringとoptIntを使ってJSONObjectレスポンスから値を取得していました。これは私の空の文字列を空の文字列に置き換え、同じものに対してヌルチェックを追加する必要はありません。どのようにretrofit2と同じことをしますか。retrofit2でnull文字列を空の文字列に変換するには?

例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が発生します。

すべてのnull文字列を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でこれを行うには時間がかかる作業である同様の

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); } } 

Stringタイプのアダプタを作ります。私は同じことをする簡単な方法を探しています。 –

+0

@SakshiGuptaが答えを更新しました。 –

関連する問題