Java 使用Gson从JSON转换为POJO时出现的问题

Java 使用Gson从JSON转换为POJO时出现的问题,java,json,gson,Java,Json,Gson,我有一个JSON REST端点响应,我想从中获取hotelNbr的值。我该怎么做 { "found": [ { "hotelNbr": 554050442, "hotelAddress": "119 Maven Lane, New Jersey", } ], "errors": [] } 我正在使用下面的代码获取它,但在下面提到的行中失败: public List RDS\u POST\u HotelDetails(字符串HotelName,

我有一个JSON REST端点响应,我想从中获取
hotelNbr
的值。我该怎么做

{
  "found": [
    {
      "hotelNbr": 554050442,
      "hotelAddress": "119 Maven Lane, New Jersey",
    }
  ],
  "errors": []
}
我正在使用下面的代码获取它,但在下面提到的行中失败:

public List RDS\u POST\u HotelDetails(字符串HotelName,字符串sUrl)引发异常,IOException{
Gson Gson=new GsonBuilder().setPrettyPrinting().create();
//创建您的http客户端
CloseableHttpClient httpclient=HttpClientBuilder.create().build();
//创建http Put对象
HttpPost ohttppost=新的HttpPost(sUrl);
//消息体
StringEntity输入=新StringEntity(
“{\'hotelNbr\':[\”“+HotelName+“\”]}”
);
//设置帖子的内容类型
setContentType(“应用程序/json”);
//将消息正文附加到请求
Ohttpost.setEntity(输入);
//提交请求并保存响应
HttpResponse response=httpclient.execute(ohttppost);
//获取响应体(实体)并解析为字符串
String sEntity=EntityUtils.toString(response.getEntity());
List hotelobject=new ArrayList();
//创建一个表示json响应中对象类型的类型标记
//我必须使用类型的完整类路径,因为我们的项目中也有一个类型类
java.lang.reflect.Type cType=new-TypeToken(){
}.getType();
//使用gson.fromJson(,
// )
hotelObject=gson.fromJson(sEntity,cType);//这里有个错误
字符串hotelNumber=hotelObject.get(0.getFound().get(0.getItemNbr().toString();
}
请在下面找到Hotel.java类

package com.hotels.company;

import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Hotel {

    @SerializedName("found")
    @Expose
    private List<Found> found = null;
    @SerializedName("errors")
    @Expose
    private List<Object> errors = null;

    public List<Found> getFound() {
        return found;
    }

    public void setFound(List<Found> found) {
        this.found = found;
    }

    public List<Object> getErrors() {
        return errors;
    }

    public void setErrors(List<Object> errors) {
        this.errors = errors;
    }

}

我试图在StackOverflow问题中找到一些示例,但没有找到我的解决方案。任何帮助都将不胜感激。

您正在解析的JSON格式不正确

“hotelAddress”后面有一个逗号,请删除

正确的JSON应该是:

 {  
   "found":[  
      {  
         "hotelNbr":554050442,
         "hotelAddress":"119 Maven Lane, New Jersey"
      }
   ],
   "errors":[ ]
}

我发现了几个问题:

  • Json无效。请注意,
    “hotelAddress”:“新泽西州马文巷119号”
    的末尾有一个逗号。请将其删除

  • 您正试图将json反序列化为
    列表
    ,但提到的json不是列表。请更新json或将其反序列化为
    酒店
    对象,而不是
    列表


  • 什么是错误堆栈?我从JSON中删除了,但仍然得到相同的问题