2014-01-27 74 views
0

我具有接收這樣JSON休息資源:獲取JSON數組,並將其在DB存儲爲串

{ 
"id":"MyHotel」, 
properties:[ 
    {"id": "location", 
    "value":"downtown"}, 
    {"id": "free wi-fi", 
    "value": "yes"}] 
} 

其通常可以通過Java代碼

@XmlRootElement(name = "loginMethod") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class Hotel{ 
@XmlElement(name="id", required="true") 
private String id; 
@XmlElementWrapper(name = "properties", required = true) 
    @XmlElement(name = "property") 
    private List<HotelProperties> properties; 
} 

@XmlRootElement(name = "properties") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class HotelProperties{ 
    @XmlElement(name = "id", required = true) 
    private String id; 
    @XmlElement(name = "value", required = true) 
    private String value; 
} 

表示然而我只存儲這些信息並將其提供給其他需要的服務,以便我不想處理數據庫中的列表。 我寧願在一列中存儲酒店的ID,在另一列中存儲包含屬性的整個JsonArray - 沒有任何解析爲字符串。所以,我的JPA實體將是這樣的:

@Entity 
@Table(name="HOTELS") 
public class HotelEntity{ 
    @Column(name = "id", nullable = false) 
    private String id; 
    @Column(name = "properties", nullable = false) 
    private String properties; 
} 

看起來像是很明顯的,但我不知道如何做到這一點,並不能找到在互聯網這樣的事情。您的意見是高度讚賞。

回答

0

兩個可能的選擇: 簡單的選擇只是爲了創建一個字符串:

JSONObject obj = new JSONObject(); 
obj.put("list",myHotel.getProperties()); 
hotelEntity.setProperties(obj.toString); 

更全面 - 來回使用傑克遜

ObjectMapper objectMapper = new ObjectMapper(); 
hotelEntity.setProperties(objectMapper.writeValueAsString(myHotel.getProperties())); 
List<HotelProperties>=new ArrayList<HotelProperties>(); 
props=objectMapper.readValue(myHotel.getProperties(),new TypeReference<ArrayList<HotelProperties>>() {}); 
相關問題