Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jackson JSON serialization, recursion avoidance by level defining

I use Jackson library for serialization of my pojo objects into JSON representation. For example I have class A and class B:

class A {   private int id;   private B b;    constructors...   getters and setters }  class B {   private int ind;   private A a;    constructors...   getters and setters } 

If I want to serialize object from class A there is certain possibility to get recursion while it is serialized. I know i can stop it by using @JsonIgnore.

Is it possible to limit the serialization by depth-level ?

For example, if the level is 2, the serialization will go this way:

  • serialize a, level = 0 (0 < 2 ok) - > serialize
  • serialize a.b, level =1 (1 < 2 ok) -> serialize
  • serialize a.b.a, level = 2 (2 < 2 not true) -> stop

Thanks in advance.

like image 885
Goran Nastov Avatar asked Apr 17 '12 12:04

Goran Nastov


1 Answers

I recently encountered a similar problem: Jackson - serialization of entities with birectional relationships (avoiding cycles)

So the solution is to upgrade to Jackson 2.0, and add to classes the following annotation:

@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class,                    property = "@id") public class SomeEntityClass ... 

This works perfectly.

like image 147
Eugene Retunsky Avatar answered Sep 22 '22 17:09

Eugene Retunsky