2016-09-27 5 views
0

У меня есть два объекта, называемых клиентом и цитатой.Как преобразовать объект JSON с однонаправленным Java-объектом, используя Jackson?

Клиент имеет много котировок.

Многие котировки с одним клиентом.

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

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

JSON объект Запрос Param:

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

Я хочу сериализации выше запроса к парам Client Object.

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

session.save(cli); 

Если я запускаю выше код клиента, имеющего Список Цитировать Ссылка.

Но Цитата class Ссылка для клиентов: null.

Так что, если я хочу достичь этого, я сделал это вручную.

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

Приведенный выше код работает нормально.

Как сделать это автоматически с помощью библиотеки Джексона.

Есть ли какие-либо аннотации?

В принципе двухсторонняя связь Сериализация необходима?

ответ

0

Используйте ниже аннотации к карте Ваш 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 добавить геттеры/сеттеров или сделать поля общественности. Затем попробуйте следующее:

 String json = "{\"clientName\":\"John\","+"\"quotes\":[{\"item\":\"A\"},{\"item\":\"B\"}]}"; 
     ObjectMapper mapper = new ObjectMapper(); 
     Client client = mapper.readValue(json,Client.class); 
     System.out.println(client); 
Смежные вопросы