2016-08-02 13 views
1

私はJAX-RSで作業していて、自分のリソースからJSONオブジェクトを取得したいと思います。特定の属性をJSONで取得するにはどうすればいいですか?

例えば、私は次のコードを持っている:

Bookクラス:

@XmlRootElement 
public class Book { 

    private int id; 

    private String name; 

} 

人クラス:

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

@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, 
     "name": "Cien Años De Soledad" 
    } 
} 

より簡単なJSONを得るためにブッククラスからid属性のみを取得するにはどうすればよいですか?

+0

bookはPersonクラスのBookタイプのオブジェクトなので、その構造を受け取ります。あなたの要件が単純な理由なら、ブック全体のインスタンスを作成するのではなく、クラスPersonの属性としてbookIdを追加するだけです。 – 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 {} 

これは、データベースモデルの整合性を確保し、かつ独立して、あなたは別のクラスでデータを表示しようとしている方法を持っています。

関連する問題