我无法使用AutoBean机制获取ArrayList进行序列化。我使用的是GWT 2.7。这是我的设置:
public interface IUser {
String getName();
void setName(String name);
ArrayList<String> getFriends();
void setFriends(ArrayList<String> friends);
}
public class User implements IUser {
private String name;
private ArrayList<String> friends;
... getters and setters for all members attributes ...
}
然后我的豆厂:
public interface AutoBeanFactoryImpl extends AutoBeanFactory {
AutoBean<IUser> user(IUser inst);
}
最后我的用法:
ArrayList<String> friends = new ArrayList<String>();
friends.add("Mary");
User user = new User();
user.setName("Fritz");
user.setFriends(friends);
AutoBeanFactoryImpl factory = GWT.create(AutoBeanFactoryImpl.class);
AutoBean<IUser> bean = factory.user(user);
String json = AutoBeanCodex.encode(bean).getPayload();
输出json没有friends数组。它的名字还可以。为什么字符串数组没有被序列化?我需要一些特别的东西吗?
由于
答案 0 :(得分:1)
问题在于您指定了ArrayList
而不仅仅是普通List
- 为了很好地生成填补Java和JSON之间空白的代码,autobeans只想使用接口。除了getter和setter之外,AutoBeans还特别支持List
,Set
(在JSON中只有List
没有重复项)和Map
。如果指定特定实现,则AutoBean工具无法始终处理它。
随意传入ArrayList
个实例,但声明你的getter和setter属于List
类型。
除此之外,这些集合可以是AutoBeans可以处理的任何类型 - 包括数字,布尔值,字符串,日期以及任何其他类似bean的接口,这些接口也符合AutoBeans可以处理的内容。