2016-09-27 57 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);