将 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
合规的。
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
合规的。