我有一个方法,setFriends()
,接受一个Set。这个方法在另一个模块中,我想通过Gson().fromJson()发送setFriends()
序列化数据。我不确定我的arg
字符串是否正确。我尝试了以下方法,但失败了:
// my attempt to serialize
String arg = "[Friend[name=Dave, relationship=Relationship[Work]], Friend[name=Jack, relationship=Relationship[School]]]"; // not sure if this string is correct
Type type = new TypeToken<Set<Friend>>(){}.getType();
Set<Friend> payload = new Gson().fromJson(arg, type);
sendPayload(payload); // will send payload to People.setFriends()
// code from the other module:
Set<Friend>
public class People {
public void setFriends(Set<Friend> friends) { ... }
}
public class Friend {
String name;
Relationship relationship;
}
public enum Relationship {
School,
Work
}
1条答案
按热度按时间anauzrmj1#
Google Gson是一个简单的基于Java的库,用于将Java对象序列化为JSON,反之亦然。
在JSON中,我们使用
{}
表示对象,对于嵌套对象,我们使用"fieldName": {<nested object>}
。在你的例子中,我把
relationship
当作一个枚举,并把Address
当作一个嵌套对象,Friend
对象的JSON看起来像这样:JSON中没有Set结构的表示,因此您将元素放在列表中。
下面是示例java代码:
输出量:
在我的环境中,Gson返回了
LinkedHashSet
对象。如果你想要不同的集合,比如排序的集合。那么你可以将Json反序列化为List<Freind>
,然后将其转换为所需的集合。