CSVMapper.schemaFor で使用される Java POJO を作成しました。
@JsonPropertyOrder({ "mkg_brnd_id", "prnt_brnd_id" })
public class MKG_BRND {
public int mkg_brnd_id;
public int prnt_brnd_id;
}
ただし、これらのフィールドの CSV 値は数値または null の場合があります。null 値が検出されると、次のエラー メッセージが表示されます。
Can not construct instance of int from String value 'null': not a valid Integer value
@JsonFormat アノテーションを使用して、数値または null 値を許可する NUMBER を示しようとしました。
@JsonPropertyOrder({ "mkg_brnd_id", "prnt_brnd_id" })
public class MKG_BRND {
@JsonFormat(shape=JsonFormat.Shape.NUMBER)
public int mkg_brnd_id;
@JsonFormat(shape=JsonFormat.Shape.NUMBER)
public int prnt_brnd_id;
}
しかし、喜びはありません。まだエラーメッセージが表示されます。
私も次のことを試しました:
@JsonPropertyOrder({ "mkg_brnd_id", "prnt_brnd_id" })
public class MKG_BRND {
@JsonFormat(shape=JsonFormat.Shape.NUMBER)
public Integer mkg_brnd_id;
@JsonFormat(shape=JsonFormat.Shape.NUMBER)
public Integer prnt_brnd_id;
}
数値が「null」の値を持つことを許可するスキーマを作成する方法について考えていますか?
更新 (2012 年 11 月 26 日 @ 午前 11 時 56 分 CST):
ゲッター/セッターをオーバーライドして、次のように自分で値を操作する必要がありました。
@JsonPropertyOrder({ "mkg_brnd_id", "prnt_brnd_id" })
public class MKG_BRND {
@JsonFormat(shape=JsonFormat.Shape.NUMBER)
public Integer mkg_brnd_id;
@JsonFormat(shape=JsonFormat.Shape.NUMBER)
public Integer prnt_brnd_id;
public Integer getMkg_brnd_id() {
return mkg_brnd_id;
}
public void setMkg_brnd_id(String anIntValue) {
if ((C_NULL_UC.equals(anIntValue)) ||
(C_NULL_LC.equals(anIntValue))) {
this.mkg_brnd_id = null;
}
else {
this.mkg_brnd_id = new Integer(aIntValue);
}
}
}