我从REST调用收到以下JSON:
"socialConnectionsData" : {
"friends" : [ {
"friend" : {
"firstname" : "John",
"lastname" : "Doe"
}
}]
}
我目前的课程如下:
public class SocialConnectionsData {
private List<Friend> friends;
public List<Friend> getFriends() {
return friends;
}
public void setFriends(List<Friend> friends) {
this.friends = friends;
}
}
然而,我得到杰克逊的一个例外,说明“朋友”是一个未被承认的领域。我如何拥有一群朋友并保持朋友的类型?
答案 0 :(得分:1)
因为该物业是“朋友”而不是“朋友”?
答案 1 :(得分:1)
在我看来,你在那里有一个额外的属性名称。杰克逊期待这样的JSON与你的对象相对应:
"socialConnectionsData" : {
"friends" : [ {
"firstname" : "John",
"lastname" : "Doe"
}]
}
您不需要做任何事情来维护朋友的类型,因为您的列表是作为通用参数声明的。
如果你想反过来让你的对象与JSON匹配,那么你需要额外的间接级别,如下所示:
public class SocialConnectionsData {
private List<FriendWrapper> friends;
public List<FriendWrapper> getFriends() {
return friends;
}
public void setFriends(List<FriendWrapper> friends) {
this.friends = friends;
}
}
public class FriendWrapper {
private Friend friend;
public Friend getFriend() {
return friend;
}
public void setFriend(Friend friend) {
this.friend = friend;
}
}
答案 2 :(得分:1)
您的JSON必须与您的对象结构匹配,此处错误消息确实指出了问题:您的主级对象(SocialConnectionsData)没有属性“socialConnectionsData”。班级名称无关紧要。
因此,您应该删除最外层的“socialConnectionsData”或使用包装器对象,如:
class Wrapper {
public SocialConnectionsData socialConnectionsData; // and/or setter to set it
}
并绑定到它。这将使JSON和对象结构匹配。