Android 使用包含参数的json对象改装POST
我正在使用改装向我的服务器发送Android 使用包含参数的json对象改装POST,android,json,gson,retrofit,Android,Json,Gson,Retrofit,我正在使用改装向我的服务器发送POST请求: @POST("/login") void login( @Body User user ,Callback<User> callback); 我需要做什么才能让我的参数像这样发送 {"user" : {"email":"example@test.com","password":"asdfasdf"} } 编辑:使用自定义的JsonSerializer,选择正确的方法: public class CustomGsonAdapter {
POST
请求:
@POST("/login")
void login( @Body User user ,Callback<User> callback);
我需要做什么才能让我的参数像这样发送
{"user" : {"email":"example@test.com","password":"asdfasdf"} }
编辑:使用自定义的
JsonSerializer
,选择正确的方法:
public class CustomGsonAdapter {
public static class UserAdapter implements JsonSerializer<User> {
public JsonElement serialize(User user, Type typeOfSrc,
JsonSerializationContext context) {
Gson gson = new Gson();
JsonElement je = gson.toJsonTree(user);
JsonObject jo = new JsonObject();
jo.add("user", je);
return jo;
}
}
}
解决问题的最简单模式是创建RequestPOJO类,例如: 文件User.java:
public class User{
public String email;
public String password;
}
文件LoginRequestPojo.java:
public class LoginRequestPojo{
public User user;
public LoginRequestPojo(User user){
this.user = user;
}
}
并且,在您的改装2请求中:
@POST("/login")
void login( @Body LoginRequestPojo requestPojo, Callback<User> callback);
@POST(“/login”)
无效登录(@Body LoginRequestPojo requestPojo,回调);
最后,您的请求主体:
{“用户”:{“电子邮件”:someone@something.com“,”password“:“123123”
}}您能将您的代码粘贴到您实际进行登录调用的位置吗,您是如何传入用户对象的?您好@Noble6,格式是我评论中的最后一行代码,但我学会了正确的方法,使用了自定义gson转换器,谢谢您的提问@KayanAlmeida我也希望做同样的事情。您是否有任何关于如何使用自定义转换器执行此操作的示例代码?@kayanameida。谢谢这绝对是一条路!谢谢,我以前也这么做过,如果你在版本与你的类似之前检查我的答案,但这不是推荐的方式,因为它创建了一个几乎不起任何作用的类。更好的方法是将所有与JSON相关的处理集中在GsonAdapter
中,或者也可以将Jackson与注释一起使用:)你不是在创建一个类来解决这个问题吗?为什么用一个更复杂的类来解决同样的问题是更好的方法呢?我还想使用下面的改型{“params”:{“email”:nilhr@gamil.com你能给我一段代码吗
public class LoginRequestPojo{
public User user;
public LoginRequestPojo(User user){
this.user = user;
}
}
@POST("/login")
void login( @Body LoginRequestPojo requestPojo, Callback<User> callback);