如何使用JavaScript覆盖反序列化列表列表的json表示?
我有可扩展的服务器端java对象,它们实现了这些简化的接口:如何使用JavaScript覆盖反序列化列表列表的json表示?,javascript,json,list,gwt,deserialization,Javascript,Json,List,Gwt,Deserialization,我有可扩展的服务器端java对象,它们实现了这些简化的接口: interface Vector { public double getX(); public double getY(); } interface Geometry { public List<Vector> getShell();//can get big public List<List<Vector>> getHoles(); } interface Feature {
interface Vector {
public double getX();
public double getY();
}
interface Geometry {
public List<Vector> getShell();//can get big
public List<List<Vector>> getHoles();
}
interface Feature {
public String getID();
public List<Geometry> getGeometry();
}
接口向量{
公共双getX();
公共双关语();
}
界面几何{
public List getShell();//可以变大
公共列表getHoles();
}
接口特性{
公共字符串getID();
公共列表getGeometry();
}
我构建了一个功能列表,使用gson-lib将其转换为json。结果看起来是这样的,只是它要大得多
[{“i”:“304”,“g”:[{“s”:[{“x”:-3169996.4370428286,“y”:1.1231962684336938E7},{“x”:-3287403.7124886,“y”:1.119282695492E7},{“x”:-2935181.88615077,“y”:1.115369116737292E7}
我能够将json解析为一个JsArray,其中JsFeature是一个实现功能接口的javascriptobject
如何在不必逐个向量解析json向量的情况下获取其余数据。理想情况下,我希望有一种方法将列表转换为JsList,其中JsGeometry是一个实现几何体的JavascriptObject类,它将包括一个列表等等。您可以实现一个委托的
列表
类将所有内容都添加到底层的JsArray
,但这并不像听起来那么容易(以及为什么它不是内置的GWT)
我建议您使用:
接口工厂扩展了AutoBeanFactory{
自动bean功能();
}
Factory=GWT.create(Factory.class);
Feature Feature=AutoBeanCodex.decode(工厂,Feature.class,jsonString).as();
运行时开销很小,几乎与列表
包装JsArray
一样,但您不需要编写任何代码就能使其工作
还请注意,您甚至可以在服务器端使用AutoBean而不是GSON。我是否可以通过
AutoBean
ing功能类来获取基础列表?当然!您不必对接口进行任何更改,只需使用AutoBeanFactory和AutoBeanCodex,就可以了。
interface Factory extends AutoBeanFactory {
AutoBean<Feature> feature();
}
Factory factory = GWT.create(Factory.class);
Feature feature = AutoBeanCodex.decode(factory, Feature.class, jsonString).as();