我有两个Expedia酒店REST API的JSON响应示例
Sample -1
{
"Room": {
"numberOfAdults": 2,
"numberOfChildren": 1,
"childAges": 1,
"rateKey": "82b0b5af-9f9a-41d5-bf39-c262d66aed19"
}
}示例2
{
"Room": [
{
"numberOfAdults": 2,
"numberOfChildren": 1,
"childAges": 1,
"rateKey": "82b0b5af-9f9a-41d5-bf39-c262d66aed19"
},
{
"numberOfAdults": 2,
"numberOfChildren": 1,
"childAges": 1,
"rateKey": "82b0b5af-9f9a-41d5-bf39-c262d66aed19"
}
]
}所以sample -1是一个房间对象,Sample -2是对象数组,我想把这个JSON响应存储到我们的java POJO中,这是我尝试过的方法。
POJO-1
import java.util.List;
public class RoomGroup{
private List<Room> Room;
public List<Room> getRoom(){
return this.Room;
}
public void setRoom(List<Room> room){
this.Room = Room;
}
}此Pojo对于Sample-2运行良好,但对于sample -1,GSON显示异常,如“exception Array Object,response was object”
POJO-2
public class RoomGroup{
private Room Room;
public Room getRoom(){
return this.Room;
}
public void setRoom(Room room){
this.Room = Room;
}
} 因此,这个pojo对于sample -1运行良好,但是对于Sample -2,Gson显示异常,如"Excepting Object,was Array of Object“。
我使用的是spring rest模板和Gson。
RestTemplate restTemplate = new RestTemplate();
restTemplate.getForObject(sb.toString(),String.class,MediaType.APPLICATION_JSON);
Gson gson= new Gson();
InitialHotelRoomAvailbility availbilityInfo = fromJson(hotelAvailibilityInfoStringResponse, InitialHotelRoomAvailbility.class); 所以请任何人让我知道我在为这些json响应创建java Pojo时做错了什么。
您的帮助我们将不胜感激。
提前谢谢你。
发布于 2014-01-21 00:36:44
在JSON中,包装在{}中的元素是一个JSON对象。包装在[]中的元素是一个JSON数组。
您的示例-1是一个JSON对象,它包含一个名为Room的JSON对象,该对象包含一组JSON原语(字符串和数字)。
示例2是一个JSON对象,其中包含一个名为Room的JSON数组,该数组包含一组带有一组JSON原语的JSON对象。
您需要以不同的方式反序列化名为Room的JSON元素,将sample -1反序列化为Room,将sample -2反序列化为List<Room>。
https://stackoverflow.com/questions/21227326
复制相似问题