【发布时间】:2014-08-12 15:51:27
【问题描述】:
我正在使用带有 GSON 的 Volley,我需要将一个对象作为参数发送给我的调用。
这就是我做对象的方式:
JSONObject params = new JSONObject();
Gson gson = new Gson();
String json = gson.toJson(route);
params.put("route", json);
然后我调用我的 Volley JsonObjectRequest 函数。
问题是参数看起来像这样:
{"route":"{\"bounds\":{\"northeast\":{\"lat\":52.3777194,\"lng\":4.924666999999999},\"southwest\":{\"lat\":52.36881109999999,\"lng\":4.9011479}},\"copyrights\":\"Map data ©2014 Google\", etc...}"
如您所见,它不是将其作为对象发送,而是将其作为 String 发送,这就是为什么我在 {} 之前(在对象开始之前)得到 "。参数应该如下所示:
{"route":{\"bounds\":{\"northeast\":{\"lat\":52.3777194,\"lng\":4.924666999999999},\"southwest\":{\"lat\":52.36881109999999,\"lng\":4.9011479}},\"copyrights\":\"Map data ©2014 Google\", etc...}
所以在 { 之前没有 " 像这样:
{"route":{myObject}
我在这里做错了什么?
【问题讨论】:
-
您是否对内部结构进行双重 json 编码? json 编码应该在整个数据结构完成后进行一次。一旦你对某些东西进行了 json 编码,它就是一个字符串。并再次对其进行编码只会将该字符串编码为另一个 json 字符串,所有 json-metachars 都会转义。
标签: android json parsing object gson