我正在尝试使用Gson解析一个简单的Json字符串。
String json = "{'FoodMenuRS':{'Status':'Success','TotalResults':4}}";
为了阅读json,我正在编写代码:
Info info = gson.fromJson(json, Info.class);
这里的信息是
public class Info {
@SerializedName("FoodMenuRS")
public String FoodMenuRS;
@SerializedName("Status")
public String Status;
@SerializedName("TotalResults")
public String TotalResults;
public String getFoodMenuRS() {
return FoodMenuRS;
}
public void setFoodMenuRS(String foodMenuRS) {
FoodMenuRS = foodMenuRS;
}
public String getStatus() {
return Status;
}
public void setStatus(String status) {
Status = status;
}
public String getTotalResults() {
return TotalResults;
}
public void setTotalResults(String totalResults) {
TotalResults = totalResults;
}
}
但在解析异常情况时:
The JsonDeserializer StringTypeAdapter failed to deserialize json object {"Status":"Success","TotalResults":4}
如果我删除'FoodMenuRs'它会正确运行。请帮忙。
答案 0 :(得分:1)
我对Gson库并不熟悉,但从我看到的内容和你收到它的错误看起来似乎是层次结构问题。
您的Info
班级 hasA FoodMenuRS
,Status
和TotalResults
,但您的json讲的是另一个故事。看起来你的json正在寻找一个名为'FoodMenuRS'的对象,它有两个名为Status
和TotalResults
的字段。我的逻辑似乎得到了这样一个事实的证实,即当你删除FoodMenuRS
时它会起作用。这有帮助吗?
答案 1 :(得分:0)
使用以下代码,我可以得到答案。
public static void main(String[] args) {
// TODO Auto-generated method stub
String json = "{'FoodMenuRS':'ABC','Status':'Success','TotalResults':4}";
Gson gson = new Gson();
Info info = gson.fromJson(json, Info.class);
System.out.println(info.toString());
}
public class Info {
@SerializedName("FoodMenuRS")
public String FoodMenuRS;
@SerializedName("Status")
public String Status;
@SerializedName("TotalResults")
**public int TotalResults;**
/**
* @return the foodMenuRS
*/
public String getFoodMenuRS() {
return FoodMenuRS;
}
/**
* @param foodMenuRS the foodMenuRS to set
*/
public void setFoodMenuRS(String foodMenuRS) {
FoodMenuRS = foodMenuRS;
}
/**
* @return the status
*/
public String getStatus() {
return Status;
}
/**
* @param status the status to set
*/
public void setStatus(String status) {
Status = status;
}
/**
* @return the totalResults
*/
public int getTotalResults() {
return TotalResults;
}
/**
* @param totalResults the totalResults to set
*/
public void setTotalResults(int totalResults) {
TotalResults = totalResults;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "Info [FoodMenuRS=" + this.FoodMenuRS + ", Status=" + this.Status
+ ", TotalResults=" + this.TotalResults + "]";
}
}
你可以使用int或String for TotalResults,它会给出正确的结果。
答案 2 :(得分:0)
当您在从客户端接收数据的控制器中设置@RequestBody时,可能会发生这种情况。您看到JSON适配器何时不知道请求。
希望'll
问候:)