Lambda Java - Iterar un objeto JSON. Parece que se duplica en el interior

votos
0

Tengo un JSON como esto y yo uso forEach para repasar la familia

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

}

Por ejemplo, si fijo el salario en cierto en el primero de identificación de miembro 123, cuando vaya a través del segundo elemento de la familia (id 124), salario es también en cierto.

Si cambio algo en el segundo ID 124, el primer ID 123 tiene el mismo valor. Parece que cada elemento de la familia es el mismo objeto pero no sabe cómo puedo averiguar eso y también cómo solucionarlo.

El código es muy grande, pero en el fondo estoy haciendo algo como esto:

.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);

¿Alguna idea? No sé que más puedo hacer .... Gracias

Publicado el 07/11/2018 a las 22:47
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
0

así que estoy asumiendo el resultado debe ser corregido:

false false false false

esta declaración member.setSalary (true); se no deberían verse afectados

"Miembro" es debería estar en objeto independiente no debe referirse a misma referencia (bastante raro)

u puede publicar el bloque completo de código?

Respondida el 07/11/2018 a las 23:16
fuente por usuario

votos
0

Comprobar si los objetos en memberla colección de los 123 y 124 son diferentes, tienen diferentes referencia. Suena como esos objetos tienen la misma referencia en esas dos colecciones. Trate tal vez para anular iguales y hashCode.

Respondida el 07/11/2018 a las 23:01
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more