我使用Jersey提供REST API。 我写了一个控制器,它将请求映射到实体:
@POST
@Path("register")
@Consumes("application/json")
@Produces("application/json")
public Response UserRegistration(User UserData)
{
}
它适用于简单的json,如:
{
"email":"email@email.pl",
"name":"Name",
"surname":"surname"
}
和实体:
public class User {
public User() {}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id",unique = true)
private int id;
@Column(name = "name")
private String name;
@Column(name = "surname")
private String surname;
@Column(name = "email", unique = true)
private String email;
//getters
// setters
}
如何映射JSON数组,如:
{
"email":"email@email.pl",
"name":"Name",
"surname":"surname"
"reqData":{
"ip":44.44.44.44}
}
两个人? 第一个实体:用户(如上所示)和实体reqData:
public class RegistrationData {
public RegistrationData(){};
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true)
private int id;
@Column(name = "ip")
private int ip;
我当然有一对一的关系,但这里并不重要(我认为)。 我希望我的问题是可以理解的。 谢谢你的帮助。
答案 0 :(得分:0)
我做到了!
我必须修改我的json请求并进行额外的课程。
对我来说效果很好。 我认为framewrok会为我做这件事:<
新JSON:
{
"user":{
"email":"email@email.com",
"name":"xxxx",
"surname":"fffff"
},
"reqData":{
"ip":"1223123"
}
}
映射:(将返回" email@email.com")
@POST
@Path("test")
@Consumes("application/json")
@Produces("application/json")
public String Test(Test Testclass)
{
return Testclass.getUser().getEmail();
}
}
和班级
public class Testclass {
public Testclass(){};
// getters
//setters
private User user;
private RegistrationData reqData;
}