2016-08-05 1 views
1

Ich versuche, json aus einem Feder-Repo zu bekommen, aber auf der Client-Seite brauchen wir das Eltern-Detail in den Kindern selbst.Wie man ein Entity-Detail innerhalb von Kindern zeigt, ohne eine infinite Rekursion zu verursachen

Beispiel: (Was ich bekam)

car:{ 
    make:'volvo', 
    color:'blue', 
    hp:225, 
    extras:{ 
     //(...) 
    } 
} 

Beispiel: (Was ich will)

car:{ 
    make:'volvo', 
    color:'blue', 
    hp:225, 
    extras:{ 
     //(...) 
     car:{ 
      // car to which extras belong, but without the "extras" property again 
     } 
    } 
} 

Ist es möglich, dies zu tun, ohne eine unendliche Rekursion verursacht? (Vorzugsweise durch Anmerkungen)

Antwort

0

endete ich mit dem fol oben Problemumgehung.

In der Extras Klasse:

@JsonProperty("cardetail") 
public Car getCarDetail(){ 
    Car _car = new Car(); 
    // (...)Clone of the original Object, ignoring the "extras" 
    return _car; 
} 

die in fast ergibt, was ich wollte, aber mit einem anderen Namen

1

OPTION 1: können Sie verwenden

@JsonIdentityInfo(generator = PropertyGenerator.class, property = "id") 

auf Sie Car und Extras Einheiten.

Option 2: Verwenden @JsonManagedReference, @JsonBackReference

@JsonManagedReference part of reference that gets serialized normally. 

@JsonBackReference part of reference that will be omitted from serialization. 

Option 3:

können Sie das einfach @JsonIgnore Anmerkung verwenden, um eine der Seiten der Beziehung zu ignorieren, so dass die Kette zu brechen.

Weitere Informationen visit here.

0

:(Leider, soweit ich weiß, ist dies nicht möglich, da jackson (spring verwendet diese Objekte zu konvertieren json und umgekehrt) löst zyklische Abhängigkeiten und somit eine unendliche Rekursion verhindern unter Verwendung dieser:

car{ 
    id: 1, 
    make:'volvo', 
    color:'blue', 
    hp:225, 
    extras:{ 
     //(...) 
     car: 1 
    } 
} 

statt dessen:

car:{ 
    make:'volvo', 
    color:'blue', 
    hp:225, 
    extras:{ 
     //(...) 
     car:{ 
      //(...) 
     } 
    } 
} 
Verwandte Themen