Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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中,如何识别从API接收的数据是数组格式还是对象格式?_Java_Arrays_Json_Object - Fatal编程技术网

在JAVA中,如何识别从API接收的数据是数组格式还是对象格式?

在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

这是我的第一个java项目

我正在使用Java中的第三方Flight API

实际上,问题是,如果接收到的数据只有一条记录,我将以对象格式获取数据,如果接收到的数据有多条记录,我将以数组格式获取数据。现在的问题是,我创建了一个POJO类,在该类中我将其定义为数组,但当我以对象格式获取数据时,它给出了错误:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 下面是我得到错误的for循环

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]);
}