別のクラスにJSONの一部のフィールドをデシリアライズ:私は以下の形式のJSON持っ
{
"id": 0,
"alternateId": 0,
"familyName": "",
"givenName": "",
"firstName":"",
"lastName": "",
"middleName": "",
"suffix": "",
"motherName": "",
"datOfBirth": "",
"sex": "",
"alias": [
{
"firstName": "",
"lastName": "",
"middleName": "",
"suffix": "",
}
]
}
はあなたが観察することができたように、四つのフィールドfirstName
、alias
フィールドに存在しているlastName
、middleName
、およびsuffix
親クラスのフィールドとしてその上にも存在します。
public class Person
{
private int id;
private int alternateId;
private String familyName;
private String givenName;
private String firstName;
private String lastName;
private String middleName;
private String suffix;
private String motherName;
private Date datOfBirth;
private String sex;
private Set<Alias> alias;
}
public class Alias
{
private String firstName;
private String lastName;
private String middleName;
private String suffix;
}
ジャクソンマッパーとの作業の良い:
現在、私は次のクラスがあります。しかし、私の質問は、Personクラスにあるフィールドは、新しいフィールドprimaryAliasに組み合わせることが可能であり、クラスはに減少させること:現在のJSONを変更することなく、
public class Person
{
private int id;
private int alternateId;
private String familyName;
private String givenName;
private Alias primaryAlias;
private String motherName;
private Date datOfBirth;
private String sex;
private Set<Alias> alias;
}
。何かがfirstName
は、lastName
は、middleName
は、とJSONのsuffix
は、新しい変数primaryAlias
にロードするためのフィールドをマッピングしますジャクソンのデシリアライザを書くために行うことができますか?
そうする完全なコードは必要ないが、十分でしょうに何をすべきかのヒント。私は検索しようとしましたが、おそらく私はこの問題を記述するのに完璧な用語が不足しています。
たぶん私は、画像をよりよく説明することができます。現在起こっていただきました!これは次のとおりです。
をそして、これは私が欲しいものです:
私は応答を削除しました。しかし、あなたのJSONでは、 'エイリアス'はリストなので、自動的にはできません。おそらくあなたはJSOnを使ってオブジェクトを手動で作成することができます。 – canillas
@canillasはい。私が知っています。私は、おそらくアノテーションとカスタムデシリアライザによる自動ジャックソンソリューションを考えていました。 –
代わりにorg.jsonを使用すると、それを実行できます。このライブラリでは、クラスのgetterからJSON表現が作成されます。したがって、必要な文字列を返すメソッド 'getPrimaryAlias()'を作成すると、そのメソッドは機能します。次に例を示します:https://stackoverflow.com/a/46826568/6370796 – Asew