gpt4 book ai didi

java - REST POST 到 Java 应用程序返回 JSON 响应,其中某些字段为 null

转载 作者:太空宇宙 更新时间:2023-11-04 13:34:09 25 4
gpt4 key购买 nike

我正在使用 Postman 将 JSON POST 输入到正在运行 Springboot 应用程序的本地主机。

帖子是:

{"applicantName":"On Gaber","amount":"5000","asset":"Car","creditScore":"602"}

Controller

@RestController
public class LoanSubmissionController {
private LoanService loanService;
@Autowired
public LoanSubmissionController(LoanService loanService) {
this.loanService = loanService;
}

@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
LoanApplicationDTO create(
@RequestBody @Valid LoanApplicationDTO loanApplicationDTO) {
return loanService.create(loanApplicationDTO);

}

服务等级:

@Service
public class LoanSubmissionService implements LoanService {

@Autowired
private final LoanApplicationRepository repository;

@Autowired
public LoanSubmissionService(LoanApplicationRepository repository) {
this.repository = repository;
}

// @Override
public LoanApplicationDTO create(LoanApplicationDTO loanApplicationDTO) {
LoanApplication persisted = LoanApplication.getBuilder()
.applicantName(loanApplicationDTO.getApplicantName())
.amount(loanApplicationDTO.getAmount()).build();
persisted = repository.save(persisted);
return convertToDTO(persisted);
}

存储库类:

public interface LoanApplicationRepository extends
MongoRepository<LoanApplication, String> {

@SuppressWarnings("unchecked")
LoanApplication save(LoanApplication saved);

DTO 类:

package com.liquidlogic.loanprocessor.web;

public final class LoanApplicationDTO {

private String id;
private String applicantName;
private String amount;
private String asset;
private String creditScore;

public LoanApplicationDTO() {
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getApplicantName() {
return applicantName;
}

public void setApplicantName(String applicantName) {
this.applicantName = applicantName;
}

public String getAmount() {
return amount;
}

public void setAmount(String amount) {
this.amount = amount;
}

public String getAsset() {
return asset;
}

public void setAsset(String asset) {
this.asset = asset;
}

public String getCreditScore() {
return creditScore;
}

public void setCreditScore(String creditScore) {
this.creditScore = creditScore;
}

}

域类:

import org.springframework.data.annotation.Id;
import org.springframework.util.Assert;

public class LoanApplication implements Application {

@Id
private String id;
private String applicantName;
private String amount;
private String asset;
private String creditScore;

public LoanApplication() {
}

private LoanApplication(ApplicationBuilder builder) {
Assert.notNull(builder);
this.applicantName = builder.applicantName;
this.amount = builder.amount;
this.asset = builder.asset;
this.creditScore = builder.creditScore;
}

public static ApplicationBuilder getBuilder() {
return new ApplicationBuilder();
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getAmount() {
return amount;
}

public void setAmount(String amount) {
this.amount = amount;
}

public String getAsset() {
return asset;
}

public void setAsset(String asset) {
this.asset = asset;
}

public String getCreditScore() {
return creditScore;
}

public void setCreditScore(String creditScore) {
this.creditScore = creditScore;
}

public void setApplicantName(String applicantName) {
this.applicantName = applicantName;
}

public String getApplicantName() {
return applicantName;
}

@Override
public String toString() {
return "LoanApplication [id=" + id + ", applicantName=" + applicantName
+ ", amount=" + amount + ", asset=" + asset + ", creditScore="
+ creditScore + "]";
}

public void update(String applicantName, String amount, String asset,
String creditScore) {
this.applicantName = applicantName;
this.amount = amount;
this.asset = asset;
this.creditScore = creditScore;
}

public static class ApplicationBuilder {

private String applicantName;
private String amount;
private String asset;
private String creditScore;

private ApplicationBuilder() {
}

public ApplicationBuilder applicantName(String applicantName) {
this.applicantName = applicantName;
return this;
}

public ApplicationBuilder amount(String amount) {
this.amount = amount;
return this;
}

public ApplicationBuilder asset(String asset) {
this.asset = asset;
return this;
}

public ApplicationBuilder creditScore(String creditScore) {
this.creditScore = creditScore;
return this;
}

public LoanApplication build() {
LoanApplication build = new LoanApplication(this);
return build;
}

}

}

Springboot Autowiring 并配置整个应用程序。不需要 web.xml 或 Spring 配置,Springboot 可以完成这一切。

application.properties:

logging.level.org.springframework.web=DEBUG
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017

JSON 响应:

{
"id": "55c39c23f04a07251bc598b0",
"applicantName": "On Gaber",
"amount": "5000",
"asset": null,
"creditScore": null
}

缩写的 Eclipse 控制台输出:

: Started LoanApplicationProcessor in 5.258 seconds (JVM running for 6.012)
: Successfully completed request

域和 DTO 中的所有字段都是字符串类型。我不明白为什么“asset”和“credtiScore”字段为空。有什么想法吗?

最佳答案

您没有在方法 public LoanApplicationDTO create(LoanApplicationDTO LoanApplicationDTO) 中将这些字段的值分配给新实体,因此这些值不会保留。

关于java - REST POST 到 Java 应用程序返回 JSON 响应,其中某些字段为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31864367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com