亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用郵遞員解析和映射 json

使用郵遞員解析和映射 json

江戶川亂折騰 2022-05-25 15:48:59
@Controllerpublic class StudentRegistrationController {@RequestMapping(method = RequestMethod.POST, value="/register/reg")@ResponseBodyStudentRegistrationReply registerStudent(@RequestBody Student student) {    System.out.println("In registerStudent");    StudentRegistrationReply stdregreply = new StudentRegistrationReply();               StudentRegistration.getInstance().add(student);    //We are setting the below value just to reply a message back to the caller    stdregreply.setId(student.getId());    stdregreply.setName(student.getName());    stdregreply.setAge(student.getAge());    stdregreply.setRegistrationNumber(student.getRegistrationNumber());    stdregreply.setPayment_detailsList(student.getPayment_detailsList());    stdregreply.setRegistrationStatus("Successful");    daocontroller.setStudentRegistration(stdregreply);    return stdregreply;}}試圖將郵遞員請求映射到但為空json就像{     "id": 300,    "name": "kukri",    "age": 26,    "registrationNumber": "54326",    "Student_payment_details":    {      "pay": 50000,      "date": "23061994",      "phcounter": "SKB"    }}Java 類public class Student {    private int id;    private String name;    private int age;    private String registrationNumber;    private Student_payment_details payment_detailsList; //getter and setter}
查看完整描述

1 回答

?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

  1. 使用 Lombok 作為我的 getter/setter,您可以忽略它并編寫自己的 getter/setter

  2. 您的請求正文存在問題,您應該將 json 中的密鑰作為 java 變量名傳遞,您正在傳遞Student_payment_details而不是payment_detailsList

  3. Getters 和 Setters 應該與你的變量名有關。

請求網址:

curl -X POST \

  http://localhost:8080/register/reg \

  -H 'Content-Type: application/json' \

  -H 'cache-control: no-cache' \

  -d '{

  "id": 300,

  "name": "kukri",

  "age": 26,

  "registrationNumber": "54326",

  "payment_detailsList": {

    "pay": 50000,

    "date": "23061994",

    "phcounter": "SKB"

  }

}'

Java Dtos:


import lombok.Data;


@Data

public class Student_payment_details {

    int pay;

    String date;

    String phcounter;

}


import lombok.Data;


@Data

public class Student {

    private int id;

    private String name;

    private int age;

    private String registrationNumber;

    private Student_payment_details payment_detailsList; //getter and setter

}

下圖顯示了控制器內填充的學生變量的內容

http://img1.sycdn.imooc.com//628ddf8c0001388822360431.jpg

注意:我不知道您的用例,但作為一般建議,請遵循 1 種命名約定,snake_case或camelCase.

在 java 中主要使用的是camelCase.

變量的命名也應該與類類型相似,

這里變量 payment_detailsList 的類型Student_payment_details會導致混淆,如果您希望 JSON 變量名稱不同,則可以使用 as


 @JsonProperty("payment_detailsList")

 private Student_payment_details student_payment_details;


查看完整回答
反對 回復 2022-05-25
  • 1 回答
  • 0 關注
  • 104 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號