Java GSON和Ormlite-应为begin_对象,但为字符串

Java GSON和Ormlite-应为begin_对象,但为字符串,java,android,json,gson,Java,Android,Json,Gson,我在尝试连接我的Web服务时遇到此gson错误 我的JSON: //city.php {"City":[ {"id":"1","estate":"2","City":"São Lourenço do Oeste"}, {"id":"2","estate":"2","City":"Porto Alegre"} ] } 我的班级城市: @DatabaseTable(tableName = "city") public

我在尝试连接我的Web服务时遇到此gson错误

我的JSON: //city.php

{"City":[
         {"id":"1","estate":"2","City":"São Lourenço do Oeste"}, 
         {"id":"2","estate":"2","City":"Porto Alegre"}
        ]
}
我的班级城市:

      @DatabaseTable(tableName = "city")
        public class CidadeModel {

        @DatabaseField(columnName = "_id", id = true)
        private int id;

        @DatabaseField(canBeNull = false, foreign = true, foreignAutoRefresh = true)
        private Estate estate;

        @DatabaseField(columnName = "name_city", canBeNull = false)
        private String City;
     //getters and setters..
    }
我有全班的反应 响应类

    public class Response {
        public ArrayList<City> City;

        public Response(){
            City = new ArrayList<City>();
        }
    }
公共类响应{
公共集市;
公众回应({
城市=新阵列列表();
}
}
这是Connection.class的一部分

     private class GetCityWebServiceTask extends AsyncTask<Void, Void, Void> {
                Response response;

         @Override
         protected Void doInBackground(Void... params) {
                String url = "http://mywebservice.com/webservice/city.php";
                HttpGet getRequest = new HttpGet(url);

                try{

            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpResponse getResponse = httpClient.execute(getRequest);
            final int statusCode = getResponse.getStatusLine().getStatusCode();

             HttpEntity getResponseEntity = getResponse.getEntity();
            InputStream httpResponseStream =      getResponseEntity.getContent();
            Reader inputStreamReader = new     InputStreamReader(httpResponseStream);

                Gson gson = new Gson();     
                this.response = gson.fromJson(inputStreamReader,Response.class);
                }       

         }

       }
私有类GetCityWebServiceTask扩展了AsyncTask{
反应;
@凌驾
受保护的Void doInBackground(Void…参数){
字符串url=”http://mywebservice.com/webservice/city.php";
HttpGet getRequest=新的HttpGet(url);
试一试{
DefaultHttpClient httpClient=新的DefaultHttpClient();
HttpResponse getResponse=httpClient.execute(getRequest);
final int statusCode=getResponse.getStatusLine().getStatusCode();
HttpEntity getResponseEntity=getResponse.getEntity();
InputStream httpResponseStream=getResponseEntity.getContent();
Reader inputStreamReader=新的inputStreamReader(httpResponseStream);
Gson Gson=新的Gson();
this.response=gson.fromJson(inputStreamReader,response.class);
}       
}
}
有人能帮我吗?
谢谢大家,您的pojo使用Estate作为Estate的类型,而您的json使用string/int“2”-您的json解析器希望Estate对象以括号开头,但看到的是字符串“2”。修复json(包括每个城市中的estate对象)或使用“int estate”

更新 您是否尝试了以下json

{
"City": [
         {
             "id": "1",
             "estate": {
                 "estate": "2"
             },
             "City": "Novo Horizonte"
         },
         {
             "id": "2",
             "estate": {
                 "estate": "3"
             },
             "City": "Novo Horizonte2"
         }
 ]    
}    
你的POJO看起来像这样:

public class City {
    public int id;
    public Estate estate;
    public String City;
}
public class Estate {
    public int estate;
}
仅供参考:生成有效json以测试/调试/修复bug的最简单方法:

String json = mygson.toJson(myResponse);

您希望JSON如何映射到POJO?为什么?如果我更改属性
private Estate
私人内部地产
在我的City类中,这是有效的,但他不理解属性
int state
是数据库中的外键。我的状态获取者和设置者是:
public Estate getEstate(){return Estate;}public void setEstate(Estate Estate){this.Estate=Estate;}
我正在理解,但是我尝试了许多不同的json解析器与Estate对象,例如:{“City”:[{“id”:“1”,“Estate”:{“Estate”:“2”},“City”:“Novo Horizonte”}}),但没有工作:(有点晚了,但我刚刚为您更新了我的答案-我希望它能有所帮助