gpt4 book ai didi

java - 将空值从 Java bean 转换为 JSON

转载 作者:行者123 更新时间:2023-11-30 06:08:34 24 4
gpt4 key购买 nike

下面给出了我的流程。

enter image description here我的问题是什么:

输入 json 请求的某些字段设置为“”。我希望响应 json 也将这些字段设置为“”。相反,这些字段被分配值 null 或 0。

我需要什么:如何设置字段来响应“”而不是 null 或 0?

代码:

JSON 请求:

    {
userID: "ABC",
creationDate: "",
noOfItems: ""
}

Bean 定义:

class UserOrderDetails {
private String userID;
private LocalDate creationDate;
private int noOfItems;

public String getUserID() {
return this.userID;
}

public void setUserID(String userID) {
this.userID=userID;
}
public LocalDate getCreationDate() {
return this.creationDate;
}

public void setCreationDate(LocalDate creationDate) {
this.creationDate=userID;
}
public int getNoOfItems() {
return this.noOfItems;
}

public void setNoOfItems(int noOfItems) {
this.noOfItems=noOfItems;
}
}

Controller 类:

class UserOrderCreationController {
@RequestMapping(value = "/createUserOrder", method = RequestMethod.POST)
public ResponseEntity<?> createUserOrder(@RequestBody UserOrderDetails userOrderDetails , @RequestHeader HttpHeaders headers) throws Exception{
//Some business logic to handle the user Order
return new ResponseEntity<UserOrderDetails>(userOrderDetails, HttpStatus.CREATED);
}
}

回应:

{
userID: "ABC",
creationDate: null,
noOfItems: 0
}

注意:我无法将 LocalDate、int - CreationDate 和 noOfItems 的数据类型更改为 String,因为它被许多其他类使用。

最佳答案

对于字符串字段,无论你发送什么值都会被保存并返回,对于其他数据类型如DATE、Integer,在将JSON值转换为JAVA时如果值为Balnk("")/null,对象映射器将其转换为null并保存到DB,同样的结果将返回。如果您希望 null 作为“”作为响应,您应该编写 customSerializer 它将 null 转换为“”作为响应。您需要用
注释这些字段 @JsonSerialize(使用 = ToStringSerializer.class)

我们需要编写ToStringSerializer.class。

解决方法: 我有这个解决方法,你可以尝试一下吗?

公共(public)类AssignNullSerializer2扩展JsonSerializer {

public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonProcessingException
{
// any JSON value you want...
if(value==null) {
jgen.writeString("");
}
}

}在 ApplicationConfiguration 中添加以下代码片段。

    ObjectMapper mapper = new ObjectMapper();
DefaultSerializerProvider sp=new DefaultSerializerProvider.Impl();
sp.setNullValueSerializer(new AssignNullSerializer2());
mapper.setSerializerProvider(sp);

它将把 DTO'S/Response 对象中的所有空值转换为“”/Empty_String我没有找到将其应用于特定领域的控件。

关于java - 将空值从 Java bean 转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50744927/

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