[英]Retrofit2 java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
[英]java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $. How to convert json to class Object
我正在尝试以格式获取数据
{
"posts": [
{ "id": 1, "title": "json-server", "author": "typicode" }
]
}
我收到错误“java.lang.IllegalStateException:预期 BEGIN_OBJECT 但在第 1 行第 2 列路径 $ 处是 BEGIN_ARRAY”
// 我将数据转换为 gson 格式的代码
public static PostData sendGetReq(apiUrl,Class<PostData> PostData){
String apiUrl = "http://localhost:3000/posts";
Header headers[] = { new BasicHeader("Accept", "application/json")};
get.setHeaders(headers);
CloseableHttpClient client = HttpClients.custom().build();
HttpResponse response = client.execute(get);
String result = IOUtils.toString(response.getEntity().getContent(),
StandardCharsets.UTF_8);
Gson gson = new Gson();
PostData postData = gson.fromJson(result, PostData.class);
return postData;
}
请帮忙。 谢谢
// 我的 class 用于 PostData
public class PostData{
public int id;
public String title;
public String author;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
请帮助。谢谢
您的 json 提供了对象列表(或数组),但您正在尝试将 map 到单个 PostData object。
尝试
List<PostData> postData = gson.fromJson(result, PostData.class);
return postData.get(0);
或类似的东西
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.