2016-08-02 1 views
1

Я работаю с JAX-RS, и я хочу получить объект JSON с моего ресурса.Как получить определенный атрибут объекта в JSON?

К примеру, у меня есть следующий код:

класс Книга:

@XmlRootElement 
public class Book { 

    private int id; 

    private String name; 

} 

И человек Класс:

@XmlRootElement 
private class Person { 

    private int id; 

    @XmlElement(name="full_name") 
    private String fullName; 

    @XmlElement(name="book_id") 
    private Book book; 

} 

Я хочу, чтобы получить это:

{ 
    "id": 1, 
    "full_name": "Gustavo Pacheco", 
    "book_id": 8 
} 

И не получится:

{ 
    "id": 1, 
    "full_name": "Gustavo Pacheco", 
    "book": { 
     "id": 8, 
     "name": "Cien Años De Soledad" 
    } 
} 

Как я могу получить только атрибут id из класса книги для получения более простого JSON?

+0

Вы получаете эту структуру, потому что книга представляет собой объект типа Book в классе Person. Если ваше требование так просто, почему вы просто добавляете bookId в качестве атрибута класса Person вместо создания всего экземпляра книги? – Hassingard

+0

Я понимаю вашу точку зрения, но у меня есть экземпляр книги, потому что этот объект представляет собой отношение JPA OneToOne. –

+1

Обычно не рекомендуется раскрывать свои внутренние объекты. Я предлагаю создать отдельный интерфейс – pedrofb

ответ

0

Для этих случаев лучше всего иметь классы, соответствующие DTO и объектам, соответствующим модели базы данных, независимо друг от друга.

Например:

package com.github.ryctabo.example.entity; 

/* Entity class */ 
@Entity 
public class Person implements Serializable {} 

package com.github.ryctabo.example.dto; 

/* Data Transfer Object class */ 
@XmlRootElement 
public class PersonData {} 

Это гарантирует целостность модели базы данных, и независимо друг от друга у вас есть, как вы собираетесь отображать данные в другом классе.