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

Get null fields after deserialization java JSON

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

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

我想这是一个具有 class 结构的 .as(User.class) 问题。我没有对它们进行过一次比较,但我找不到问题。提前谢谢你。

终于找到你的问题了

1.@JsonRootName("User") in User class 不行,我必须单独创建一个 UserDTo class.

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

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

2.In class User

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

应该是

private Map<String, CustomFieldDTO> UserCustomFields;

3.In class 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, 
AllowChangeStatus=false), IsDefault=false, 
SerializedValue=Nickyfieldname213241), bb854ba1-8ef7-4cfb-9fe7- 
8c6d9a0551b2=CustomFieldDTO(FieldUuid=null, FieldType=String, 
FieldName=null, WebAdmin=CustomFieldVariableDTO(Status=0, 
AllowChangeStatus=false), Client=CustomFieldVariableDTO(Status=0, 
AllowChangeStatus=false), IsDefault=false, 
SerializedValue=Nickyfieldname2)}))