2016-09-27 96 views
0

我有两个实体称为客户端和报价。如何使用Jackson将单向Java对象转换为JSON对象?

客户端有很多报价。

许多行情拥有单独的客户端。

@Entity 
class Client 
{ 
int c_id; 
String clientName; 
@OneToMany 
List<Quote> quotes; 
} 

@Entity 
class Quote 
{ 
int q_id; 
String item; 
@ManyToOne 
Client client; 
} 

JSON对象请求帕拉姆:

{ 
    "clientName":"ABC pvt Ltd", 
    "quotes" :[ 
    { 
     "item":"A" 
    }, 
    { 
     "item":"B" 
    } 
    { 
     "item":"C" 
    } 
    ] 
} 

我想连载上述请求参数去客户端对象。

ObjectMapper om = new ObjectMapper(); 
Client cli = om.convervalue(x,Client.class); 

session.save(cli); 

如果我运行引用参考的上面的代码 具有列表客户端。

但是引用类客户端引用为空

所以,如果我想实现这一点,我做了手动。

ObjectMapper om = new ObjectMapper(); 
Client cli = om.convervalue(x,Client.class); 

List<Quote> quotes = cli.getQuotes; 

for(int i=0;i<quotes.size();i++) 
{ 
    Quote qu = quotes.get(i); 
    qu.setClient(cli); 
} 

session.save(cli); 

上面的代码工作正常。

如何使用Jackson Library自动执行此操作。

有没有任何注释是做到这一点的?

基本上需要双向关系序列化

回答

0

使用下面的注释地图根据自己的Hibernate映射你的JSON与@JsonManagedReference & @JsonBackReference

@Entity 
class Client 
{ 
int c_id; 
String clientName; 
@OneToMany 
@JsonManagedReference 
List<Quote> quotes; 
} 

@Entity 
class Quote 
{ 
int q_id; 
String item; 
@ManyToOne 
@JsonBackReference 
Client client; 
} 
0

Client.class添加getter/setter方法或使公共领域。 然后请尝试以下操作:

 String json = "{\"clientName\":\"John\","+"\"quotes\":[{\"item\":\"A\"},{\"item\":\"B\"}]}"; 
     ObjectMapper mapper = new ObjectMapper(); 
     Client client = mapper.readValue(json,Client.class); 
     System.out.println(client);