Json 格森投掷“;应为BEGIN_对象,但为字符串
这是Json对象Json 格森投掷“;应为BEGIN_对象,但为字符串,json,gson,Json,Gson,这是Json对象 [ { "UserId":"demouser1", "Catagories":[ { "CatagoryName":"Entertainment", "Persent":"25" }, { "CatagoryName":"Household", "Persent":"25" }, { "CatagoryName":"Mo
[
{
"UserId":"demouser1",
"Catagories":[
{
"CatagoryName":"Entertainment",
"Persent":"25"
},
{
"CatagoryName":"Household",
"Persent":"25"
},
{
"CatagoryName":"Movie",
"Persent":"25"
},
{
"CatagoryName":"Misc",
"Persent":"25"
}
],
"RequestId":null,
"ResponseStatus":false,
"Token":null
}
]
使用以下方法解析上述Json
public class CategoryEntity {
private String CatagoryName;
private String Persent;
public String getCatagoryName() {
return CatagoryName;
}
public void setCatagoryName(String catagoryName) {
CatagoryName = catagoryName;
}
public String getPersent() {
return Persent;
}
public void setPersent(String persent) {
Persent = persent;
}
}
import java.util.List;
public class Entity {
private String UserId;
public String getUserId() {
return UserId;
}
public void setUserId(String userId) {
UserId = userId;
}
public List<CategoryEntity> getListCatagories() {
return ListCatagories;
}
public void setListCatagories(List<CategoryEntity> listPMMCatagories) {
ListCatagories = listPMMCatagories;
}
public String getRequestId() {
return RequestId;
}
public void setRequestId(String requestId) {
RequestId = requestId;
}
public boolean isResponseStatus() {
return ResponseStatus;
}
public void setResponseStatus(boolean responseStatus) {
ResponseStatus = responseStatus;
}
private List<CategoryEntity> ListCatagories;
private String RequestId;
private String Token;
public String getToken() {
return Token;
}
public void setToken(String token) {
Token = token;
}
private boolean ResponseStatus;
}
你知道我该怎么修吗
谢谢 您的类
类别实体
是正确的,但是在您的类实体
中,属性列表类别
应该被调用类别
,以匹配JSON中的名称
除此之外,为了解析JSON,您最好执行以下操作:
Gson gson = new Gson();
Type listType = new TypeToken<List<Entity>>() {}.getType();
List<Entity> entities = gson.fromJson(yourJsonString, listType);
您必须这样做,因为您的整个JSON响应是一个数组,由
[…]
包围,因此您需要将其解析为一些列表
..否。这不是JSON对象。阅读文档:“[”表示json数组的开头。@njzk2根据它是有效的。@Dahaka:有效的,是的,但仍然是一个数组,而不是一个对象(被虚幻缩进弄糊涂了)。当我尝试此操作时,我得到一个异常,显示为07-30 11:14:18.563:E/AndroidRuntime(299):原因:com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:应为BEGIN_数组,但为字符串07-30 11:14:18.563:E/AndroidRuntime(299):at com.google.gson.gson.fromJson(gson.java:815)07-30 11:14:18.563:E/AndroidRuntime(299):at com.google.gson.gson.gson.fromJson(gson.java:868)
Gson gson = new Gson();
Type listType = new TypeToken<List<Entity>>() {}.getType();
List<Entity> entities = gson.fromJson(yourJsonString, listType);
String catagoryNameI = entities.get(0).getCatagories().get(i).getCatagoryName();
String persentI = entities.get(0).getCatagories().get(i).getPersent();