我一直在尝试评估GWT Autobean功能,以便将JSON对象解码/编码为REST调用的域对象。
遵循示例:http://code.google.com/p/google-web-toolkit/wiki/AutoBean#Quickstart
我能够将单个JSON对象转换为域对象:
AutoBean<Person> personBean = AutoBeanCodex.decode(factory, Person.class, JsonResources.INSTANCE.json().getText());
其中JsonResources.INSTANCE.json()返回一个JSON字符串。
但是,我还没有成功从JSON转换Person对象列表。
如果有人有这方面的例子,会有所帮助吗?
谢谢!
答案 0 :(得分:17)
我能想到的唯一方法是创建一个具有List<Person>
属性的特殊autobean。例如:
public interface Result {
void setPersons(List<Person> persons);
List<Person> getPersons();
}
示例json string:
{
persons:[
{"name":"Thomas Broyer"},
{"name":"Colin Alworth"}
]
}
更新的:
输入JSON是一个数组时的解决方法(由评论中persons[0]
建议).E.g。 JSON看起来像这样:
[{"name":"Thomas Broyer"},{"name":"Colin Alworth"}]
解析代码如下所示:
AutoBeanCodex.decode(factory, Result.class, "{\"persons\": " + json + "}").getPersons();