Gson显示异常,如“Excepting Object,但是是Object of Object”

时间:2014-01-20 06:12:40

标签: java arrays json spring

我有两个由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的错误。

你的帮助将不胜感激。

先谢谢你。

1 个答案:

答案 0 :(得分:0)

在JSON中,{}中包含的元素是JSON对象。包含在[]中的元素是JSON数组。

您的样本-1是一个JSON对象,它包含一个名为Room的JSON对象,它包含一堆JSON基元(字符串和数字)。

你的样本-2是一个JSON对象,它包含一个名为Room的JSON数组,它包含一堆带有一堆JSON原语的JSON对象。

您需要以不同的方式反序列化名为Room的JSON元素,将样本-1作为Room并将样本-2作为List<Room>进行反序。