Retrofit
中是否有任何简单的方法可以自动将传递的对象转换为JSON
?
这是我的Retrofit界面:
@FormUrlEncoded
@POST("/places/name")
void getPlacesByName(@Field("name") String name,
@Field("city") String city,
@Field("tags") Tags tags,
Callback<PlaceResponse> callback);
起初我认为如果我通过Tags
对象,它会自动转换为JSON
,但实际上请求看起来像这样:
name=pubs&city=London&tags=com.app.database.model.Tags%4052aa38a8
有没有简单的方法可以将POJO
转换为JSON
中的Retrofit
?
答案 0 :(得分:1)
使用Jackson将其直接转换为字符串:
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
String json = ow.writeValueAsString(object);
或者使用Gson:http://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/
答案 1 :(得分:1)
您正在创建包含参数的网址,因为您正在使用@URLEncoded
并将参数传递为@Field
。
以下是解决方案:
@POST("/places/name")
void getPlacesByName(@Body RequestObject req, Callback<PlaceResponse> callback);
另外,我建议使用@GET
来检索对象。 @POST
用于创建对象,@PUT
用于更新。虽然这不是错误的,但它仍然是RESTful
符合推荐的。