在Android中将POJO转换为JSON Retrofit

时间:2015-06-01 16:00:09

标签: android json retrofit

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

2 个答案:

答案 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符合推荐的。