GWT Autobean - 如何处理列表?

Posted

技术标签:

【中文标题】GWT Autobean - 如何处理列表?【英文标题】:GWT Autobean - how to handle lists? 【发布时间】:2012-11-30 18:35:19 【问题描述】:

我一直在尝试评估 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 对象列表。

如果有人有这方面的例子,会很有帮助吗?

谢谢!

【问题讨论】:

【参考方案1】:

嗯,我能想到的唯一方法是创建一个特殊的 autobean,它将具有 List&lt;Person&gt; 属性。例如:

public interface Result 
    void setPersons(List<Person> persons);
    List<Person> getPersons();

以及示例 json 字符串:


   persons:[
      "name":"Thomas Broyer",
      "name":"Colin Alworth"
   ]

更新: 输入 JSON 是数组时的解决方法(如 cmets 中的 persons[0] 所建议)。例如JSON 看起来像这样:

["name":"Thomas Broyer","name":"Colin Alworth"]

解析代码如下:

AutoBeanCodex.decode(factory, Result.class, "\"persons\": " + json + "").getPersons();

【讨论】:

在不更改 JSON 的情况下解决该问题:AutoBeanCodex.decode(factory, Result.class; "\"persons\": " + json + "").getPersons() 这是我在我的 autobeans 中使用的技术。但我想我会应用@ThomasBroyer 提出的技术。 @ThomasBroyer 好主意,我已将其添加到答案中,因为您的代码中有一点拼写错误。 感谢您的回答。问题是我有一堆接口。我不想为它们中的每一个或每次添加新的时都这样做。一般有没有办法做到这一点?有什么想法吗?

以上是关于GWT Autobean - 如何处理列表?的主要内容,如果未能解决你的问题,请参考以下文章

修改SimpleHtmlSanitizer.java时,如何处理 (Gwt)?

序列化为 GWT AutoBean 时如何保留 LinkedHashMap 的顺序?

在 GWT 上使用 AutoBean 解析未知类型的 JSON 对象

如何在 GWT 中使用 autobean 将 json 转换为 java 类

GWT Autobean JSON 规范

AutoBean、数组/列表属性和 JSNI