将JsonArray对象从字符串解析为返回异常的Java对象

问题描述 投票:0回答:1

我希望能够使用GSON将服务器的响应解析为Java对象,这是我的代码:

public void test() throws IOException {
        Gson gson = new Gson();
        final String uri= BASIC_URL.concat("/?apikey=772f549d&s=prom&y=2020");
        simpleHttpClient = new SimpleHttpClient();
        String response = simpleHttpClient.sendGetRequest(BASIC_URL.concat("/?apikey=772f549d&s=prom&y=2020"), headersMap);
        JsonArray array = JsonHandler.asList(response, "Search");
        Type listType = new TypeToken<List<ImdbClass>>(){}.getType();
        Object obj = array.toString().getClass();
        List<ImdbClass> lists = gson.fromJson(array.toString(), listType);
        ImdbClass imdbClass = gson.fromJson(array.toString(), ImdbClass.class);
}

这是需要解析为java对象的所需Json Array字符串:

[
  {
    "Title": "Killer Prom",
    "Year": "2020",
    "imdbID": "tt10814308",
    "Type": "movie",
    "Poster": "N/A"
  },
  {
    "Title": "Prom Knight",
    "Year": "2020–",
    "imdbID": "tt12143924",
    "Type": "series",
    "Poster": "https://m.media-amazon.com/images/M/MV5BMmRmN2QzMzQtYzdiZS00ZTEzLTg4ODgtYmY1MzBmMTM3ZGIzXkEyXkFqcGdeQXVyMTE1Mjg1MjU2._V1_SX300.jpg"
  }
]

这是我的课程要解析为:

public class ImdbClass {

    String Title;
    String Year;
    String imdbID;
    String Type;
    String Poster;

    public ImdbClass(){}
}

但是当我到达代码的最后一行时,出现以下错误:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $

尽管我的数组是对象数组,但我想念什么?

java gson
1个回答
0
投票

据我所知,列表实际上不是JSON文档的有效根元素。做这样的事情:

{
    "movies": [
        // your stuff goes here
    ]
}

并创建一个匹配的MovieList类以将该根对象反序列化为。

© www.soinside.com 2019 - 2024. All rights reserved.