首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gson显示异常,如"Excepting Object但was Array of Object“

Gson显示异常,如"Excepting Object但was Array of Object“
EN

Stack Overflow用户
提问于 2014-01-20 14:12:40
回答 1查看 73关注 0票数 0

我有两个Expedia酒店REST API的JSON响应示例

代码语言:javascript
复制
Sample -1

{
    "Room": {
        "numberOfAdults": 2,
        "numberOfChildren": 1,
        "childAges": 1,
        "rateKey": "82b0b5af-9f9a-41d5-bf39-c262d66aed19"
    }
}

示例2

代码语言:javascript
复制
{
    "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

代码语言:javascript
复制
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

代码语言:javascript
复制
  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。

代码语言:javascript
复制
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时做错了什么。

您的帮助我们将不胜感激。

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 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>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21227326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档