- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Autobeans 的上下文中不知何故与数组和 JSNI 作斗争。
在我的一个 GWT 项目中,我使用 JSON 从后端检索数据。
在客户端检索数据后,我想使用自定义可视化小部件(用 javascript 开发)对其进行可视化。
以下是组件:
JSON 结构:
{'ids':[1,2,3,4],'data':[[1.0],[1.0,2.0],[1.0,2.0,3.0] ... ]}
基本上,我的 json 负载中有两个数据集。 ids 是一个整数数组 (int[]
),data 是一个 float 组数组 (float[][]
)
当然有不同的方法来解析客户端上的数据。我决定使用 AutoBeans。所以我为我的 json 结构定义了一个接口(interface)。
AutoBean:
interface MyData {
List<Integer> ids;
List<List<Float>> data;
}
解析数据工作正常。
我的自定义可视化小部件有一个 API 函数来设置数据,如下所示:
function api_setData(ids,data) {
//ids should be an Array of Ints
//data should be an array of array of Floats.
}
问题是,对于 JSNI,我无法使用普通的 Java 数组。我必须使用JsArray
。
public final native void setData(JsArrayInteger ids,JsArray<JsArrayInteger> data /*-{
this.api_setData(ids,data);
}-*/;
所以我必须将 AutoBean 属性(data 和 ids)转换为 JsArray 实例。有更好/更好的方法吗?
或者也许我应该使用 JSONParser
而不是 AutoBeans
这样效率更高吗?
最佳答案
如果您必须处理 JSNI,而且您仅在客户端使用 MyData
接口(interface),那么就不要使用 AutoBeans。请改用 JSON 覆盖:
public class MyData extends JavaScriptObject {
protected MyData() { /* required for JSOs */ }
public final native JsArrayInteger getIds() /*-{ return this.ids; }-*/;
public final native JsArray<JsArrayNumber> getData() /*-{ return this.data; }-*/;
}
然后解析您的 JSON:
MyData data = JsonUtils.safeEval(jsonStr);
customVisualizationWidget.setData(data.getIds(), data.getData());
<小时/>
或者,假设您只需要为 setData 解析数据,则只需使用 JavaScriptObject
。
在您的小部件中:
public final native void setData(JavaScriptObject obj) /*-{
this.api_setData(obj.ids, obj.data);
}-*/;
当您需要解析 JSON 并将其提供给小部件时:
customVisualizationWidget.setData(JsonUtils.safeParse(jsonStr));
关于java - AutoBean、数组/列表属性和 JSNI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10834036/
我一直在尝试评估 GWT Autobean 功能,以将 JSON 对象解码/编码为 REST 调用的域对象。 以下示例:http://code.google.com/p/google-web-tool
问题 有没有办法使用 AutoBean 框架反序列化 JSON,以便生成的 bean 具有影响其一个或多个成员的类型的类型参数? 背景 带有 JSON 结果的 RPC 我正在使用 GWT ( Requ
我一直在使用 AutoBeans 映射来自非 GWT-RPC 基于 Java 的 Web 服务的 JSON 数据。到目前为止一切正常,除了一个映射。 在服务器端,Class 有一个 Map 类型的属性
我试图弄清楚如何在 GWT 中使用 AutoBean 序列化列表,但我不断收到空指针异常。 这是我所拥有的: GuideCreatorFactory beanFactory = AutoBea
我正在将 GWT 2.4 与编辑器和请求工厂框架一起使用。我有一个模型 Trip,它有一个地址“起点”和一个地址“目的地”。通过 UI 创建行程时,会自动创建两个地址并将其分配给该行程。用户填写详细信
我在 Autobeans 的上下文中不知何故与数组和 JSNI 作斗争。 在我的一个 GWT 项目中,我使用 JSON 从后端检索数据。 在客户端检索数据后,我想使用自定义可视化小部件(用 javas
出于好奇,我检查了 autobeans 是如何生成的。我发现它使用 sun.misc.ProxyGenerator 类来生成 autobean 代理 并使用反射。但我不明白,它在客户端是如何工作的。那
请帮帮我,我做错了什么 InfraNameModel public interface InfraNameModel { String getInfraName(); void set
我有一个类,我想生成他的 AutoBean。 示例.类: public static class Example implements Serializable { public
我在后端有一个 Spring 应用程序,在前端有一个 GWT 应用程序。当用户登录时,''index.jsp'' 会将用户信息输出为 JavaScript 变量。 我正在使用 AutoBeanFact
我有一个像这样的 JSON 映射: { "element":"value","element2":"value2",...} 同时具有键和值字符串。我尝试用 autobean 读取它,但出现奇怪的异常
我有来自服务器并代表 pojo 的 json。当我使用 AutoBean 反序列化为 json 时,有些工作有些不行!我发现那些不能反序列化的有 BigDecimal getters/setters。
目前我有一个类设置要作为 autobean 处理: public interface Asset extends Hit { String getGuid(); String getH
我使用 AutoBean将数据编码/解码为 JSON,这在以前的 GWT 版本中是可以的。在我看来,AutoBean 是处理 JSON 的非常好的和方便的工具。自 GWT ver.2.4.0 以来,此
我尝试将 GWT AutoBean 与 Hibernate 一起使用。于是我写了如下的实体类: @Entity(name = "Contact") public interface Contact {
我尝试过使用 Map、HashMap 和 LinkedHashMap 作为 AutoBean 工厂的类型,并且总是在序列化后更改初始元素顺序。 我不想发送额外的 ArrayList 来保存订单数据。有
我有一条 XML 消息,我正尝试使用 GXT 和 AutoBeans 进行解析。我的 XML 的根节点有一个命名空间声明,似乎 AutoBean 解析器无法读取 XML。 我使用 PropertyNa
我的服务器以 JSON 格式返回对象列表。他们可能是 Cat s 或 Dog s,例如。 当我知道他们都会是 Cat s,我可以设置AutoBeanCodex轻松工作。但是,当我不知道它们是什么类型时
我希望有人可以为我的问题提出一个简单的解决方案。 我有一个 POJO,说: public class Person { private String name; public Stri
我想使用三个参数创建一个 JSON-RPC 请求 - 字符串、整数和我自己的对象。请求应如下所示: {"method":"MyMethod", "params":["text", 123, {"nam
我是一名优秀的程序员,十分优秀!