使用邮递员解析和映射 json
parse and map json using postman
@Controller
public class StudentRegistrationController {
@RequestMapping(method = RequestMethod.POST, value="/register/reg")
@ResponseBody
StudentRegistrationReply 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
}
- 使用Lombok作为我的getter/setters,可以无视,自己写getters/setters
- 您的请求正文有问题,您应该将 json 中的键作为 java 变量名传递,您传递的是
Student_payment_details
而不是 payment_detailsList
- Getters 和 Setters 应该与您的变量名有关。
请求url:
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
}
下图显示了填充在控制器中的学生变量的内容
注意:
我不知道您的用例,但作为一般建议,请遵循一种命名约定,snake_case
或 camelCase
.
在 java 中最常用的是 camelCase
.
变量的命名也应该类似于 class 类型,
这里变量 payment_detailsList 是 Student_payment_details
类型,这会导致混淆,如果您希望 JSON 变量名称不同,那么您可以使用 as
@JsonProperty("payment_detailsList")
private Student_payment_details student_payment_details;
@Controller
public class StudentRegistrationController {
@RequestMapping(method = RequestMethod.POST, value="/register/reg")
@ResponseBody
StudentRegistrationReply 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
}
- 使用Lombok作为我的getter/setters,可以无视,自己写getters/setters
- 您的请求正文有问题,您应该将 json 中的键作为 java 变量名传递,您传递的是
Student_payment_details
而不是payment_detailsList
- Getters 和 Setters 应该与您的变量名有关。
请求url:
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
}
下图显示了填充在控制器中的学生变量的内容
注意:
我不知道您的用例,但作为一般建议,请遵循一种命名约定,snake_case
或 camelCase
.
在 java 中最常用的是 camelCase
.
变量的命名也应该类似于 class 类型,
这里变量 payment_detailsList 是 Student_payment_details
类型,这会导致混淆,如果您希望 JSON 变量名称不同,那么您可以使用 as
@JsonProperty("payment_detailsList")
private Student_payment_details student_payment_details;