GSON将我的对象作为字符串而不是对象发送

时间:2014-08-12 15:51:27

标签: android json parsing object gson

我正在使用Volley和GSON,我需要将一个对象作为参数发送给我的电话。

我就是这样做的对象:

JSONObject params = new JSONObject();
        Gson gson = new Gson();
        String json = gson.toJson(route);
params.put("route", json);

然后我调用我的Volley JsonObjectRequest函数。

问题是params看起来像这样:

{"route":"{\"bounds\":{\"northeast\":{\"lat\":52.3777194,\"lng\":4.924666999999999},\"southwest\":{\"lat\":52.36881109999999,\"lng\":4.9011479}},\"copyrights\":\"Map data ©2014 Google\", etc...}"

正如您所看到的,不是将其作为对象发送,而是将其作为字符串发送,这就是为什么我得到"在{}之前(在对象开始之前)。参数应该看起来像:

   {"route":{\"bounds\":{\"northeast\":{\"lat\":52.3777194,\"lng\":4.924666999999999},\"southwest\":{\"lat\":52.36881109999999,\"lng\":4.9011479}},\"copyrights\":\"Map data ©2014 Google\", etc...}

所以没有"之前{喜欢这个:

{"route":{myObject}

我在这做错了什么?

1 个答案:

答案 0 :(得分:1)

您不想混用JSONObjectGSON。 这是两个不同的库。

使用gson.toJsonTree获取元素,然后使用JsonObject代替JSONObject

JsonObject params = new JsonObject();
Gson gson = new Gson();
params.add("route", gson.toJsonTree(route));