反序列化java JSON后获取空字段

问题描述

我认为班级结构有问题。但我看不出在哪里。这是一个代码。我将只使用 JSON 中的一些值。如果您需要其他代码部分,请告诉我。 Maily 我想我在这里得到了空值的对象(用户):

User userDTOGetone = userRequester.getUser
  (
    token,new HashMap<String,Object>() {{ put("Uuid",userResponseDTO.getUserUuid()); }}
   )
   .getBody()
   .as(User.class);

我想这是类结构的问题 .as(User.class)。我没有比较它们一次,我找不到问题。提前致谢。

解决方法

最后,我发现了你的问题。

1.@JsonRootName("User")User 类中不起作用,我必须创建一个单独的 UserDTo 类。

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

@Data
public class UserDTO {
    @JsonProperty("User")
    private User user;
}

2.在课堂User

private HashMap<String,HashMap<String,CustomFieldDTO> > UserCustomFields;

应该

private Map<String,CustomFieldDTO> UserCustomFields;

3.在课堂CustomFieldDTO

private HashMap<String,CustomFieldVariableDTO> WebAdmin;
private HashMap<String,CustomFieldVariableDTO> Client;

应该

private CustomFieldVariableDTO WebAdmin;
private CustomFieldVariableDTO Client;

我做了一个简单的测试

UserDTO user = res.as(UserDTO.class);
System.out.println(user);

UserDTO(user=User(Uuid=b5ee1186-7355-4810-a422-c427c1ae420c,Username=golden_snich_testt,Email=golsnich4599@gmail.com,FirstName=Bob,LastName=Sigal,Birthdate=1995-01-07T00:00:00Z,Phone=+12698741258,Notes=null,Locked=false,PostPayLimit=10.0,HighSchoolUuid=null,IsVerifiedHighSchoolUser=false,UserCustomFields={9cebfaaa-ca66-4bbd-baa3- 
557b0645c293=CustomFieldDTO(FieldUuid=null,FieldType=String,FieldName=null,WebAdmin=CustomFieldVariableDTO(Status=0,AllowChangeStatus=false),Client=CustomFieldVariableDTO(Status=0,IsDefault=false,SerializedValue=Nickyfieldname213241),bb854ba1-8ef7-4cfb-9fe7- 
8c6d9a0551b2=CustomFieldDTO(FieldUuid=null,SerializedValue=Nickyfieldname2)}))