java Spring Book使用嵌套json对象作为RequestBody

holgip5t  于 2023-01-24  发布在  Java
关注(0)|答案(1)|浏览(128)

我有一个控制器,我想在它的请求体中接受一个自定义对象。但是,进来的json数据是嵌套的。有可能把嵌套的json对象Map到一个类吗?或者,我需要把json对象作为一个字符串,然后使用jsonMap器(像Jackson)吗?下面是一个例子来说明我的意思:

    • 正在发送的json数据:**
{
   'function_call': 'create_book',
   'date_called': 1672753599223,
   'Book':{
      'id': 1,
      'title': "some title',
      'desc': 'some desc'
   }
}
    • 图书分类:**
@Data
public class Book{
   public int id;
   public String title;
   public String desc;
}
    • 控制器:**
@PostMapping("/data-product")
@ResponseBody
public void createBook(@RequestBody Book book) {          
    System.out.print(book);        
}
lsmepo6l

lsmepo6l1#

方法是创建一个新的类来处理JSON对象,Spring需要知道JSON的结构。
课本:

@Data
public class Book {
   public int id;
   public String title;
   public String desc;
}

创建一个Request类来处理JSON:
提醒!属性名称必须与JSON请求相同

@Data
public class BookRequest {

   public Book Book;

    /* You can set the other next tow attributes if you want
      public String function_call;
      public Long date_called;
    */
}

然后将Book Request类设置为一个参数,这样就只能在JSON中获取Book obj上的数据:

JSON请求:

{
  "function_call": "create_book",
  "date_called": 1672753599223,
  "Book": {
  "id": 1,
  "title": "Spring Book use nested json object for RequestBody",
  "desc": "Stackoverflow jason question"
 }
}

相关问题