【发布时间】:2021-12-02 06:28:24
【问题描述】:
我在 Springboot 应用程序中有以下 java 类
public enum Status {
DISABLED(false),
ENABLED(true);
private final boolean enabled;
Status(boolean value){
this.enabled = value;
}
public boolean value() {
return this.enabled;
}
/*
@JsonValue public boolean jsonValue() { return enabled; }
Error: Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `com.q.demo.model.Status` from Boolean value (token `JsonToken.VALUE_TRUE`);
*/
/*
public static Status forValue(@JsonProperty("enabled") Boolean status) {
if (status == null) {
return null;
}
if (Status.ENABLED.value() == status.booleanValue()) {
return Status.ENABLED;
} else {
return Status.DISABLED;
}
}
Error: Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Input mismatch reading Enum `com.q.demo.model.Status`: properties-based `@JsonCreator` ([method com.q.demo.model.Status#forValue(java.lang.Boolean)]) expects JSON Object (JsonToken.START_OBJECT), got JsonToken.VALUE_TRUE;
*/
}
public class User {
private Long userId;
private String userName;
private String role;
private String password;
private Status enabled;
//Getters and setters
}
我想序列化/反序列化下面给出的 json 到枚举
{ “用户名”:“用户名”, “角色”:“角色”, “密码”:“psw”, “启用”:真 }
我没有成功使用@JsonProperty(仅接受字符串)或@JsonValue(在代码中作为注释行给出错误消息)或@Jsconcreator(再次在注释部分给出代码和错误消息。有人可以指点一下?Jackson 版本是2.13.0。谢谢。
【问题讨论】: