在JAVA中,如何识别从API接收的数据是数组格式还是对象格式?
这是我的第一个java项目 我正在使用Java中的第三方Flight API 实际上,问题是,如果接收到的数据只有一条记录,我将以对象格式获取数据,如果接收到的数据有多条记录,我将以数组格式获取数据。现在的问题是,我创建了一个POJO类,在该类中我将其定义为数组,但当我以对象格式获取数据时,它给出了错误: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 下面是我得到错误的for循环在JAVA中,如何识别从API接收的数据是数组格式还是对象格式?,java,arrays,json,object,Java,Arrays,Json,Object,这是我的第一个java项目 我正在使用Java中的第三方Flight API 实际上,问题是,如果接收到的数据只有一条记录,我将以对象格式获取数据,如果接收到的数据有多条记录,我将以数组格式获取数据。现在的问题是,我创建了一个POJO类,在该类中我将其定义为数组,但当我以对象格式获取数据时,它给出了错误: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but w
Map<String, String> mlFlightAirline = new HashMap<>(); // Unique Flight Airline List
Gson gson = new Gson();
MlFlightResponse mlflights = gson.fromJson(mlResponse, MlFlightResponse.class); // mlResponse is JSON response
public class MlFlightResponse {
private MlFlightGetFlightAvailibilityResponse GetFlightAvailibilityResponse;
public MlFlightGetFlightAvailibilityResponse getGetFlightAvailibilityResponse() {
return GetFlightAvailibilityResponse;
}
public void setGetFlightAvailibilityResponse(MlFlightGetFlightAvailibilityResponse GetFlightAvailibilityResponse) {
this.GetFlightAvailibilityResponse = GetFlightAvailibilityResponse;
}
@Override
public String toString() {
return "ClassPojo [GetFlightAvailibilityResponse = " + GetFlightAvailibilityResponse + "]";
}
}
for (MlAirlineList airline : mlflights.getGetFlightAvailibilityResponse().getAirlineList()) {
mlFlightAirline.put(airline.getAirlineCode(), airline.getAirlineName());
}
请把我引向正确的方向
谢谢,你可以手动检查热修复程序。如果响应以“{”开头,以“}”结尾,那么你可以在开始和结束部分的响应中添加[and]。从我看到的情况来看,这肯定会起作用。你正在尝试处理的JSON响应中有一个数组 试一试
你能显示解析代码吗?@Deadpool解析代码?我是说rest调用?或将响应转换为POJO时的代码@RavinderSingh@Deadpool我更新了有问题的代码。
Map<String, String> mlFlightAirline = new HashMap<>(); // Unique Flight Airline List
Gson gson = new Gson();
MlFlightResponse mlflights = gson.fromJson(mlResponse, MlFlightResponse.class); // mlResponse is JSON response
public class MlFlightResponse {
private MlFlightGetFlightAvailibilityResponse GetFlightAvailibilityResponse;
public MlFlightGetFlightAvailibilityResponse getGetFlightAvailibilityResponse() {
return GetFlightAvailibilityResponse;
}
public void setGetFlightAvailibilityResponse(MlFlightGetFlightAvailibilityResponse GetFlightAvailibilityResponse) {
this.GetFlightAvailibilityResponse = GetFlightAvailibilityResponse;
}
@Override
public String toString() {
return "ClassPojo [GetFlightAvailibilityResponse = " + GetFlightAvailibilityResponse + "]";
}
}
for (MlAirlineList airline : mlflights.getGetFlightAvailibilityResponse().getAirlineList()) {
mlFlightAirline.put(airline.getAirlineCode(), airline.getAirlineName());
}
MlAirlineList
{
"AirlineList": {
"AirlineCode":"test",
"AirlineName":"test"
}
}
{
"AirlineList": [{
"AirlineCode":"test",
"AirlineName":"test"
},
{
"AirlineCode":"test",
"AirlineName":"test"
}]
}
for (MlAirlineList airline : mlflights.getGetFlightAvailibilityResponse().getAirlineList()) {
mlFlightAirline.put(airline[0], airline[1]);
}