Лямбда Java - итерация объекта Json. Похоже, внутри дублируется - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть такой json, и я использую forEach, чтобы перебрать семью

{
"people": {
    "family": [
        {
            "id": "123",
            "member": [
                {
                    "id": "11",
                    "salary": false
                },
                {
                    "id": "12",
                    "salary": false
                }
            ]
        },
        {
            "id": "124",
            "member": [
                {
                    "id": "11",
                    "salary": false
                },
                {
                    "id": "12",
                    "salary": false
                }
            ]
        }
    ]
}

}

Например, если я устанавливаю зарплату в true в идентификаторе первого члена 123, когда я прохожу второй элемент семьи (id 124), зарплата также в истине.

Если я что-то изменю во втором идентификаторе 124, первый идентификатор 123 будет иметь то же значение. Похоже, что каждый элемент семьи - это один и тот же объект, но я не уверен, как мне это выяснить, а также как это исправить.

Код действительно большой, но в основном я делаю что-то вроде этого:

.forEach(family -> {
    family.getId() // I get 123 and then 124
    family.getMember().forEach(member -> {
                       System.out.println(member.getSalary()) // Show false for id 123 but then for id 124, show true when i would be false at this point
                       member.setSalary(true);

Есть идеи? не уверен, что еще я могу сделать .... Спасибо

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

поэтому я предполагаю, что исправленный результат должен быть:

ложная ложный ложный ложь

это утверждение member.setSalary (true); это не должно быть затронуто

"член" должен быть в отдельном объекте, он не должен ссылаться на одну и ту же ссылку (довольно странно)

Вы можете опубликовать полный блок кода?

0 голосов
/ 08 ноября 2018

Проверьте, отличаются ли объекты в коллекции member для 123 и 124, имеют разные ссылки. Похоже, что эти объекты имеют одинаковые ссылки в этих двух коллекциях. Попробуйте возможно переопределить equals и hashCode.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...