POJOをjson文字列にシリアライズする方法に取り組んでいます。jackson ライブラリを使用していますが、問題が発生しました。
json オブジェクトの値は、文字列または文字列配列のいずれかにすることができます...
{"mimeTypes":"all"}
また
{"mimeTypes":["application/pdf", "application/msword"]}
これが現時点での私のアプローチです
@JsonIgnore
private String mimeTypes;
@JsonIgnore
private String[] mimeTypesArray;
@JsonRawValue
@JsonProperty("integration/enabled-mime-types")
private String mimeType;
public void setMimeTypes(String mimeTypes) {
this.mimeTypes = mimeTypes;
mimeType = mimeTypes;
}
public void setMimeTypes(String[] mimeTypes) {
this.mimeTypesArray = mimeTypes;
try {
JSONArray jsonArray = new JSONArray(mimeTypes);
this.mimeType = jsonArray.toString();
} catch (JSONException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
基本的に、文字列用のフィールド、文字列配列用のフィールド、および json オブジェクトに追加する文字列用のフィールドがあります。オブジェクトマッパーが使用するフィールドを選択する必要がないように、セッターでシリアル化します。
これはハッキーなやり方のように感じます。より良い解決策はありますか?ジャクソンビューの使用について読んでいますが、これが私の問題で可能かどうかはわかりません。