如何解决值不会通过 Java 中的 ObjectMapper 映射到 POJO 类,即使它存在于 JSON 中
这些是来自要映射到 POJO 类的输入 JSON 的值。
"{"data":{"getUserInformation":{"CreationDate":"22.07.2021 10:24:53","Email":"test@b.de","User":{"UserName":"testUser20SK","LoggingEnabled":null},"State":"FORCE_CHANGE_PASSWORD","Verified":true}}}"
映射逻辑如下:
String response = appsyncGraphQLClient.execute(HttpMethodName.POST,new ByteArrayInputStream(query.getBytes())).getBody();
JsonNode data = new ObjectMapper().readTree(response).path("data").path("getUserInformation");
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
objectMapper.treeToValue(data,CognitoUser.class);
我没有从 JSON 中获取 POJO 中的任何值。所有变量都显示为空。我在这里可能缺少什么?
我的 POJO CLass 是从 Graphql 模式的自动生成功能生成的
type CognitoUser {
CreationDate: String
Email: String!
State: String
User: User
Username: String!
Verified: Boolean
}
POJO 类
@javax.annotation.Generated(
value = "com.kobylynskyi.graphql.codegen.GraphQLCodegen",date = "2021-07-22T13:02:27+0200"
)
public class CognitoUser implements java.io.Serializable {
private String CreationDate;
@javax.validation.constraints.NotNull
private String Email;
private String State;
private User User;
@javax.validation.constraints.NotNull
private String Username;
private Boolean Verified;
public CognitoUser() {
}
public CognitoUser(String CreationDate,String Email,String State,User User,String Username,Boolean Verified) {
this.CreationDate = CreationDate;
this.Email = Email;
this.State = State;
this.User = User;
this.Username = Username;
this.Verified = Verified;
}
public String getCreationDate() {
return CreationDate;
}
public void setCreationDate(String CreationDate) {
this.CreationDate = CreationDate;
}
public String getEmail() {
return Email;
}
public void setEmail(String Email) {
this.Email = Email;
}
public String getState() {
return State;
}
public void setState(String State) {
this.State = State;
}
public User getUser() {
return User;
}
public void setUser(User User) {
this.User = User;
}
public String getUsername() {
return Username;
}
public void setUsername(String Username) {
this.Username = Username;
}
public Boolean getVerified() {
return Verified;
}
public void setVerified(Boolean Verified) {
this.Verified = Verified;
}
编辑: 我已经发现可能是什么问题,但无法获得正确的解决方案
JsonNode 在子节点下存储值,如下所示:(从调试中得到)
result = {ObjectNode@3642} "{"CreationDate":"22.07.2021 10:24:53","Email":"test@lb.de","Verified":true}"
_children = {LinkedHashMap@4442} size = 5
"CreationDate" -> {TextNode@4452} ""22.07.2021 10:24:53""
"Email" -> {TextNode@4454} ""test@lb.de""
"User" -> {ObjectNode@4456} "{"UserName":"testUser20SK","LoggingEnabled":null}"
"State" -> {TextNode@4458} ""FORCE_CHANGE_PASSWORD""
"Verified" -> {BooleanNode@4460} "true"
_nodeFactory = {JsonNodeFactory@4443}
我使用了
objectMapper.readValue(data.get("children").asText(),CognitoUser.class);`
但它没有给出结果。 `
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。