我有一个这样的json,我曾经使用对象映射器将它映射到一个类,我在类UserData.java中将 auth 视为JsonNode
{
"auth": [
{
"user_admin": [
{
"name": [
"harry"
],
"department": [
"MC"
],
"userid": [
"1234"
]
}
]
},
{
"user_employee": [
{
"name": [
"stella"
],
"department": [
"CC"
],
"role": [
"employee"
]
}
]
}
],
"language":"english",
"sub": "f598ab"
}
我已将 auth 的json节点用于将其映射到UserData.java类,如下所示。
@Getter@Setter
private JsonNode authorization;
@Getter@Setter
private String language;
@Getter@Setter
private String sub;
现在我想将值为user_admin和user_employee的值映射到另一个具有name,department,userid的类。我创建了一个类auth.java并将此代码放入其中。
@Getter @Setter
private List< String> name;
@Getter @Setter
private List<String> department;
@Getter @Setter
private List<String> userid;
@Getter @Setter
private List<String> role;
现在我已经尝试了以下代码来映射它,但它无法正常工作
UserData mappedObject= (UserData)commonUtils.readJsonStringRespondToObjRequest((json), UserData.class);
Auth roleData= mapper.treeToValue(mappedObject.getAuth(), Auth.class);
我得到的错误是
Can not deserialize instance of Auth.java out of START_ARRAY
答案 0 :(得分:0)
鉴于您的JSON结构auth
是array
,您需要将其转换为Auth
个对象的数组。
Auth[] roleData = mapper.treeToValue(mappedObject.getAuth(), Auth[].class);
此外,在Auth
课程中,您应该拥有这些属性。
class Auth {
@Getter @Setter
UserAdmin user_admin;
@Getter @Setter
UserEmployee user_employee;
@Getter @Setter
String language;
@Getter @Setter
String sub;
}
然后,在UserAdmin
和UserEmployee
中,您应该在JSON(名称,部门等)中拥有与每个属性对应的字段。