我从服务器获得JSON响应,我想将其转换为POJO,如下所示:
public class MeasureDataGetPOJO {
@SerializedName("CODE")
private String code = null;
@SerializedName("USER")
private User user = null;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public class User {
private List<MeasureData> measureDatas = null;
public List<MeasureData> getMeasureDatas() {
return measureDatas;
}
public void setMeasureDatas(List<MeasureData> measureDatas) {
this.measureDatas = measureDatas;
}
public class MeasureData {
@SerializedName("MT_TIME")
private String time = null;
@SerializedName("MT_VALUE")
private String value = null;
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
}
}
我从服务器获得的JSON:
{
"CODE":"012",
"USER":
[
{
"MT_TIME":"1412882760",
"MT_VALUE":"319",
}
]
}
我从Gson得到的错误是:
Caused by: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 10
JSON或POJO是否有问题我尝试将JSON映射到? 我期待一个用户有多对MT_TIME和MT_VALUE。
所以我得到一个状态代码和一个用户对象。用户有一对MT_TIME和MT_VALUE对。 之后,用户对象中可能会有更多用户信息。
这只是猜测,但这是正确的json吗?
{
"CODE":"012",
"USER":
{
"MEASURE_DATA":
[
{
"MT_TIME":"1412882760",
"MT_VALUE":"319"
}
]
}
}
在这里附加一个SerializedName:
@SerializedName("MEASURE_DATA")
private List<MeasureData> measureDatas = null;
答案 0 :(得分:2)
预计。从你的课堂上讲,JSON应该是这样的:
{
"CODE": "012",
"USER": {
"MT_TIME": "1412882760",
"MT_VALUE": "319",
}
}
但是您显示的JSON中的用户字段位于数组中。
如果这意味着您所期望的是用户列表而不是仅一个用户,那么将POJO中的字段替换为List<User>
;否则,修复JSON。
答案 1 :(得分:0)
您需要用户列表。在"USER":
之后看到你的json字符串中有[
。
这就是错误所说的:
Expected BEGIN_OBJECT but was BEGIN_ARRAY