首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于rest Get调用的POJO,以返回java中嵌套的复杂json。

用于rest Get调用的POJO,以返回java中嵌套的复杂json。
EN

Stack Overflow用户
提问于 2020-04-22 07:48:36
回答 3查看 1.2K关注 0票数 0

嗨,我需要工作流(如何创建pojo结构和如何通信)在json结构下面创建REST调用。

请帮帮我

代码语言:javascript
复制
[
  {
   "id":"1", 
   "Nmae":"gourav",
    "Gender":"Male",
     "usertype":{
                 "Typeone":"Admin",
                 "Status":"Active"
                 }
                {
                  "Typetwo":"Agent",
                  "Status":"Disabled"
                  }
  },
  {
   "id":"2", 
   "Nmae":"satya",
    "Gender":"Male",
     "usertype":{
                 "Typeone":"Admin",
                 "Status":"disabled"
                 }
                {
                  "Typetwo":"Agent",
                  "Status":"active"
                  }
  }
]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-22 08:27:46

你可以这样做,

控制器类,您将在其中定义您的路线-

代码语言:javascript
复制
@GET
@Path("/users")
@Produces({ javax.ws.rs.core.MediaType.APPLICATION_JSON})
public Response getUser(){

    // Create Object of your DAO or Service class and use getUserDetails() to return a list of users, maybe from the Database.
    List<User> usersList = serviceExampleObject.getUserDetails();

    //Set the list field to the response object
    return Response.status(Status.OK).entity(usersList).build();
}

如果您想遵循SpringBoot的方法,您的控制器将是-

代码语言:javascript
复制
@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/users")
    public ResponseEntity<?> getUsers(){

        List<Users> usersList = userService.getUsersDetail();

        return new ResponseEntity<>(usersList, HttpStatus.OK);
    }
}

创建一个用户PoJo (没有添加所有的getter/setter来缩短发布)-

代码语言:javascript
复制
class User{

    private Integer id;
    private String name;
    private String gender;
    private List<UserType> userType;

    public Integer getId() {
        return id;
    }
    ...
    ...

    public void setUserType(List<UserType> userType) {
        this.userType = userType;
    }
}

创建一个UserType PoJo -

代码语言:javascript
复制
class UserType{
    private String typeNumber;
    private String typeRole;
    private String status;

    public String getTypeNumber() {
        return typeNumber;
    }
    ...
    ...

    public void setStatus(String status) {
        this.status = status;
    }
}

另外,还需要修改json响应。在userType字段中,可以有不同名称的字段,因此,我建议遵循以下方法:

代码语言:javascript
复制
"usertype": [
    {
        "typeNumber": "one",
        "typeRole": "Admin",
        "status": "Active"
    },
    {
        "typeNumber": "two",
        "typeRole": "Agent",
        "status": "Disabled"
    }
]
票数 0
EN

Stack Overflow用户

发布于 2020-04-22 07:57:31

您可以使用您想要的字段创建一个名为User的类,并使用javax.ws.rs.core.Response,如下所示:

代码语言:javascript
复制
@Produces({ javax.ws.rs.core.MediaType.APPLICATION_JSON})
Response getUser(){
    User user = new User();
    //set fields
    return Response.status(Status.OK).entity(user).build();
}
票数 0
EN

Stack Overflow用户

发布于 2020-04-22 08:04:45

您只需创建两个类,一个用于user,另一个用于UserType

代码语言:javascript
复制
Public Class UserType {

  private String type;
  private String status;

//Constructor, Getters and Setters, etc.
}




Public Class User {

  private long id;
  private String name;
  private String gender;
  private UserType userType;

//Constructor, Getters and Setters, etc.
}

然后,当您返回User时,它还将返回与您前面描述的json对应的UserType。它应该是这样的:

代码语言:javascript
复制
@RequestMapping(value = "/url", method = RequestMethod.GET)
public User getUser(PARAMS_IF_ANY) {

  // Application logic to find the user
  return user;

}

这招就完成了

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61359846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档