Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Gson显示异常,如“异常对象但为对象数组”_Java_Arrays_Json_Spring - Fatal编程技术网

Java Gson显示异常,如“异常对象但为对象数组”

Java Gson显示异常,如“异常对象但为对象数组”,java,arrays,json,spring,Java,Arrays,Json,Spring,我有两个Expedia Hotel REST API的JSON响应示例 Sample -1 { "Room": { "numberOfAdults": 2, "numberOfChildren": 1, "childAges": 1, "rateKey": "82b0b5af-9f9a-41d5-bf39-c262d66aed19" } } 样本-2 { "Room": [ {

我有两个Expedia Hotel 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"
        }
    ]
}
所以样本-1是单房间对象,样本-2是对象数组,我想将这个JSON响应存储到我们的JavaPOJO中,这是 我试过的方法

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对于样本-1来说工作得很好,但是对于样本-2,Gson显示的异常类似于exception对象,但它是对象的数组

我正在使用SpringREST模板和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响应创建JavaPOJO的错误所在

谢谢你的帮助


提前感谢。

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

示例-1是一个JSON对象,它包含一个名为Room的JSON对象,其中包含一组JSON原语字符串和数字

示例2是一个JSON对象,它包含一个名为Room的JSON数组,其中包含一组JSON对象和一组JSON原语

您需要以不同的方式反序列化名为Room的JSON元素,sample-1作为Room,sample-2作为List。

请参见
RestTemplate restTemplate = new RestTemplate();
  restTemplate.getForObject(sb.toString(),String.class,MediaType.APPLICATION_JSON);

  Gson gson= new Gson(); 
  InitialHotelRoomAvailbility availbilityInfo = fromJson(hotelAvailibilityInfoStringResponse, InitialHotelRoomAvailbility.class);