我有两个由Expedia Hotel REST API提供的JSON Response样本
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"
}
]
}
所以示例-1是Single Room Object,Sample -2是Object的数组,我想将这个JSON Response存储到我们的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但是对于样本-1,GSON显示异常,如“Exception the Array Object但响应是对象”
POJO-2
public class RoomGroup{
private Room Room;
public Room getRoom(){
return this.Room;
}
public void setRoom(Room room){
this.Room = Room;
}
}
所以这个pojo对于样本-1工作正常但是对于Sample -2 Gson显示异常,如“Excepting Object但是是Object of Object”。
我正在使用弹簧休息模板和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的错误。
你的帮助将不胜感激。
先谢谢你。
答案 0 :(得分:0)
在JSON中,{}
中包含的元素是JSON对象。包含在[]
中的元素是JSON数组。
您的样本-1是一个JSON对象,它包含一个名为Room
的JSON对象,它包含一堆JSON基元(字符串和数字)。
你的样本-2是一个JSON对象,它包含一个名为Room
的JSON数组,它包含一堆带有一堆JSON原语的JSON对象。
您需要以不同的方式反序列化名为Room
的JSON元素,将样本-1作为Room
并将样本-2作为List<Room>
进行反序。