簡體   English   中英

Java將json映射到兩個對象

[英]Java mapping json to two objects

我使用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;

我當然有一對一的關系,但在這里並不重要(我認為)。 我希望我的問題是可以理解的。 感謝幫助。

我做的!

我不得不修改我的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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM