我有一个 Java 应用程序从第 3 方 RESTful Web 服务获取以下 JSON:
{
"widgets":[
[
{
"id":25128,
"status":"always",
"uuid":"96f62edd-fa8a-4267-8ffb-14af0d37de26"
}
],
[
{
"id":25200,
"status":"always",
"uuid":"78553c9e-398f-495a-8fb8-ada0fb297844"
}
],
[
{
"id":25128,
"status":"never",
"uuid":"b1e3deb2-a842-4cba-8272-458d15efb394"
}
]
]
}
并尝试将其转换为List<Widget>
使用 GSON:
public class Widget {
@SerializedName("id")
private Long id;
@SerializedName("status")
private String status;
@SerializedName("uuid")
private String uuid;
// Getters & setters, etc.
}
这是我的映射器代码:
String jsonResponse = getJsonFromWebService();
Gson gson = new Gson();
List<Widget> widgets = gson.fromJson(jsonResponse, new TypeToken<List<Widget>>(){}.getType());
当我运行它时,我收到以下错误:
java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2
java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2
显然,我需要在将 JSON 字符串发送到我的 GSON 映射器代码之前对其进行操作,或者我需要配置 GSON 来处理“意外”的 JSON,但我不确定哪个更容易/更合适。如果我需要“按摩” JSON 字符串,不确定我需要做什么才能让 GSON 很好地使用它。如果我需要配置 GSON,也不知道该做什么。有任何想法吗?提前致谢。