が不足して、私の問題をテストするための単純なJavaコードです:奇妙なJSONマッピング問題 - ここでは要素
ObjectMapper mapper = new ObjectMapper();
String s = "[\n" +
" {\n" +
" \"id\": \"\",\n" +
" \"name\": \"fsgh\",\n" +
" \"email\": \"[email protected]\",\n" +
" \"password\": \"fdg\"\n" +
" },\n" +
" {\n" +
" \"id\": \"\",\n" +
" \"name\": \"sdfg\",\n" +
" \"email\": \"[email protected]\",\n" +
" \"password\": \"dfghfgh\"\n" +
" }\n" +
" ]";
String jsonBody = "{\n" +
" \"id\": \"\",\n" +
" \"name\": \"<cxzzx\",\n" +
" \"email\": \"[email protected]\",\n" +
" \"address\": \"asd 72b\",\n" +
" \"zip\": \"1234\",\n" +
" \"city\": \"Asdf\",\n" +
" \"country\": \"Norway\",\n" +
" \"enabled\": \"true\",\n" +
" \"quota\": \"50\",\n" +
" \"expires\": \"2021-04-02\",\n" +
" \"adminAccounts\": " +
s +
"}";
Set<Account> accounts = mapper.readValue(s, Set.class);
Organization organization = mapper.readValue(jsonBody, Organization.class);
今では私たちは2つの管理者アカウントを持っている必要がありJSONとアカウントオブジェクトから見ることができています正しいが、組織には最初のものしかない。デバッガの値のスクリーンショットを以下に示します。
これはどこから来たのでしょうか?
をどのようにadminaccountは(または任意のクラスが呼び出される)の等号/のhashCodeが実装されていますか?私は両方のアカウントに空のIDがあることに気づいた。アカウントの等価性がidに基づいている場合、HashSetは重複として(正しく)1つを省略します。 – yshavit
@yshavit Accountクラスでは実装されていません。両方の要素が(正しく)設定されている「accounts」セットに対しても有効です。 – grekier
ああ、良い点です。 adminAccountの1つの要素はどのようなものですか?それは何が起こっているかについて何か手がかりを与えますか? – yshavit