Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 格森投掷“;应为BEGIN_对象,但为字符串_Json_Gson - Fatal编程技术网

Json 格森投掷“;应为BEGIN_对象,但为字符串

Json 格森投掷“;应为BEGIN_对象,但为字符串,json,gson,Json,Gson,这是Json对象 [ { "UserId":"demouser1", "Catagories":[ { "CatagoryName":"Entertainment", "Persent":"25" }, { "CatagoryName":"Household", "Persent":"25" }, { "CatagoryName":"Mo

这是Json对象

[
   {
   "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();