Java 在googleplacesapi上解析GSON

Java 在googleplacesapi上解析GSON,java,json,gson,google-places-api,Java,Json,Gson,Google Places Api,我试图将一个json解析到我的java对象,但gson出现了错误 错误是: com.google.gson.JsonParseException: Expecting object found: "{ \"debug_info\" : [], \"html_attributions\" : [], \"results\" : [ { \"geometry\" : { \"location\" : { \"la

我试图将一个json解析到我的java对象,但gson出现了错误

错误是:

com.google.gson.JsonParseException: Expecting object found: "{   \"debug_info\" : [],   \"html_attributions\" : [],   \"results\" : [      {         \"geometry\" : {            \"location\" : {               \"lat\" : 53.330661,               \"lng\" : -6.265253            }         },         \"icon\" : \"http://maps.gstatic.com/mapfiles/place_api/icons/bar-71.png\",         \"id\" : \"b50995ee5107706386c43d562fc614dc9db57937\",         \"name\" : \"Lower Deck\",         \"rating\" : 3.5,         \"reference\" : \"CnRoAAAATUQrAt8LAzje_32Uzm5jklTmhsYA_orKtp9DIO_-kmCTU7DsHkNBae3aY9dLusdqJaSGwdj6G_-LpqbKWIi5r0RjcJWHljxCex8wI9UMO93uqSpr63S6qyNjJdw01nGEl1LLtbtz4VRGuKdEAl6sShIQEeM3-QnEjeoO7lEWZBYQQBoU0TOKwurVvTs565wKYPLQNmkLF5w\",         \"types\" : [ \"bar\", \"establishment\" ],         \"vicinity\" : \"1 Portobello Harbour, Dublin\"      },      {         \"geometry\" : {            \"location\" : {               \"lat\" : 53.332361,               \"lng\" : -6.275473            }         },         \"icon\" : \"http://maps.gstatic.com/mapfiles/place_api/icons/bar-71.png\",         \"id\" : \"8e8f338164d20d4ad7d943db980ce62d0325c2b5\",         \"name\" : \"The Headline Bar\",         \"rating\" : 3.6,         \"reference\" : \"CnRvAAAAvlARk-Q-08T9kuvY_mp90vn10jf84TDNKymDtVyEYvt1wg7TEJyaqGF_R6zDGkXBoKSOEfovqm-A8w42OlOa1yAE-nMdGVgR_EKJKu5HHdzUmKlkFoPqcJxbJpFAblqCMz_ClpbwMEMtFNLA_hZidRIQVCg4_6vqhJuSDSqtbIG2zxoUeEGHiUYqFk2e_aB18dqFSKx_E5Y\",         \"types\" : [ \"bar\", \"establishment\" ],         \"vicinity\" : \"118 S Circular Rd, Crumlin, Dublin\"      }   ],   \"status\" : \"OK\"}"
那么我的课程如下:

谷歌地图

    @SerializedName("debug_info")
    private List<String> debug_info;

    @SerializedName("html_attributions")
    private List<String> html_attributions;

    @SerializedName("next_page_token")
    private String next_page_token;

    @SerializedName("results")
    private List<Results> results;

    @SerializedName("status")
    private String status;
位置

@SerializedName("lat")
private Double lat;

@SerializedName("lng")
private Double lng;
照片

    @SerializedName("height")
    private int height;

    @SerializedName("width")
    private int width;

    @SerializedName("html_attributions")
    private List<String> html_attributions;

    @SerializedName("photo_reference")
    private String photo_reference;
拜托,有人能帮我吗?
谢谢

您错误地使用了您的Gson实例。应该是

gson.toJson(ritorno);
您不需要调用
ritorno.toString()

Gson可以直接从对象序列化

toString()
实际上与json或序列化无关

关于良好做法的其他信息: 您应该为类实现自己的toString()方法,以便更好地进行调试。它与将对象序列化为字符串无关


Gson非常适合使用,如果您不担心性能,那么它是一个不错的选择。除此之外,还有更快(但使用或配置起来稍微不那么明显)的库,如:

嘿,伙计,非常感谢。。。我打电话的方式是错误的。。。相反,现在我这样调用:
Gson Gson=new GsonBuilder().serializeNulls().create();GoogleMapper mapper=gson.fromJson(retrono.toString(),GoogleMapper.class)为什么一直调用ritorno.toString()方法?
    @SerializedName("height")
    private int height;

    @SerializedName("width")
    private int width;

    @SerializedName("html_attributions")
    private List<String> html_attributions;

    @SerializedName("photo_reference")
    private String photo_reference;
    Gson gson = new GsonBuilder().serializeNulls().create();
    String json = gson.toJson(retorno.toString());

    GoogleMapper mapper = gson.fromJson(json, GoogleMapper.class);
gson.toJson(ritorno);