文字列であり、ジャクソンとのアレイとすることができるフィールドを解析する方法

ディエゴ・サンス:

私は、JavaとobjectMapperとの新たなんです。私はそれが文字列または配列することができ、鍵は二つのタイプを持っている可能性があり、JSONフィールドを解析しようとしています。

例:

{
  "addresses": [],
  "full_name": [
    "test name_1",
    "test name_2"
  ],
}

若しくは

{
{
  "addresses": [],
  "full_name": "test name_3",
}
}

クラスの例:


@JsonIgnoreProperties(ignoreUnknown = true)
@Data -> lombok.Data
public class Document {

    private List<String> addresses;

    @JsonProperty("full_name")
    private String fullName;
}

私は、JSONをデシリアライズするためにobjectMapperを使用「FULL_NAME」フィールドは、文字列を持っている場合、正しく動作しますが、配列は、直列化復元に失敗したときに到着しました。

アイデアは、属性の文字列プット値が到着したときが、文字列として配列、CONCATENATEデ配列要素(String.join(「」、値))到着するということです

これは、クラスメソッドでカスタムのデシリアライズを適用することが可能ですか?例えばsetFullName用()(使用lombok.Data)

私はこのサイトでは、他の例を見ましたが、機能しません。

全てに感謝

デッドプール :

ジャクソン2.6からは使用することができますJsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAYを

@JsonProperty("full_name")
@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
private String[] fullName;

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=197461&siteId=1