gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:15:29 24 4
gpt4 key购买 nike

我希望能够使用 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 数组字符串:

[
{
"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 $

虽然我的数组是对象数组,但我错过了什么?

最佳答案

代码中的最后一行尝试从数组反序列化为单个对象,即

ImdbClass imdbClass = gson.fromJson(array.toString(), ImdbClass.class);

异常(exception)情况是告诉您要执行从 json 字符串到 ImdbClass.class 的反序列化,它并不期望 JSON 数据采用数组格式。

上一行,

List<ImdbClass> lists = gson.fromJson(array.toString(), listType);

看起来它应该已经为您创建了一个 ImdbClass 列表 - 您还需要最后一行吗?您应该能够迭代列表并访问它们,例如

for (ImdbClass movie : lists)
{
// do something with movie
}

关于java - 将 JsonArray 对象从字符串解析为返回异常的 java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62403247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com