将 POJO 转换为 JSON 在 Android 中改造

Convert POJO to JSON Retrofit in Android

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转换为Retrofit中的JSON吗?

使用 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/

您正在创建带参数的 URL,因为您正在使用 @URLEncoded 并将参数作为 @Field 传递。

解决方法如下:

@POST("/places/name")
void getPlacesByName(@Body RequestObject req, Callback<PlaceResponse> callback);

此外,我建议使用 @GET 来检索对象。 @POST 用于创建对象,@PUT 用于更新。虽然这没有错,但作为建议,它是 RESTful 合规的。