2012-12-01 32 views
2

我想使用RestyGWT的JsonEncoderDecoder来编码/解码JSON对象。从他们的文档中我可以做到:RestyGWT - JsonEncoderDecoder是否适用于列表?

public interface PersonCodec extends JsonEncoderDecoder<PersonCodec>> {} 

并使用编码/解码功能。然而,当我这样做:

public interface PersonListCodec extends JsonEncoderDecoder<List<PersonCodec>> {} 

它给了我编译错误:

java.lang.NullPointerException 
at org.fusesource.restygwt.rebind.BaseSourceCreator.<init>(BaseSourceCreator.java:76) 
at org.fusesource.restygwt.rebind.JsonEncoderDecoderClassCreator.<init>(JsonEncoderDecoderClassCreator.java:79) 
at org.fusesource.restygwt.rebind.ExtendedJsonEncoderDecoderClassCreator.createComposerFactory(ExtendedJsonEncoderDecoderClassCreator.java:46) 
at org.fusesource.restygwt.rebind.BaseSourceCreator.create(BaseSourceCreator.java:210) 
at org.fusesource.restygwt.rebind.JsonEncoderDecoderGenerator.generate(JsonEncoderDecoderGenerator.java:38) 
at com.google.gwt.core.ext.IncrementalGenerator.generateNonIncrementally(IncrementalGenerator.java:40) 
at com.google.gwt.dev.javac.StandardGeneratorContext.runGeneratorIncrementally(StandardGeneratorContext.java:657) 
at com.google.gwt.dev.cfg.RuleGenerateWith.realize(RuleGenerateWith.java:41) 
at com.google.gwt.dev.shell.StandardRebindOracle$Rebinder.rebind(StandardRebindOracle.java:79) 
at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:276) 
at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:265) 
at com.google.gwt.dev.DistillerRebindPermutationOracle.getAllPossibleRebindAnswers(DistillerRebindPermutationOracle.java:91) 
at com.google.gwt.dev.jjs.impl.UnifyAst$UnifyVisitor.handleGwtCreate(UnifyAst.java:355) 
at com.google.gwt.dev.jjs.impl.UnifyAst$UnifyVisitor.handleMagicMethodCall(UnifyAst.java:433) 
at com.google.gwt.dev.jjs.impl.UnifyAst$UnifyVisitor.endVisit(UnifyAst.java:237) 
at com.google.gwt.dev.jjs.ast.JMethodCall.traverse(JMethodCall.java:243) 
at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:361) 
... 

如何使这项工作任何想法?或其他建议编码/解码JSON到Java对象?

谢谢!

JSONArray batch = new JSONArray(); 
int idx=0; 
for (Pojo i : buffer) { 
    batch.set(idx++, CODEC.encode(i)); 
} 

回答

3

我用下面这段代码是能够编码我的名单。

@XmlRootElement 
public class WrapperResult { 
    protected List<Person> result; 
} 

然后我可以编码和解码列表没有问题。

+0

谢谢!我最终做了类似的事情。 – ankurvsoni

0

我总结我的列表中的对象,因为我在输出的控制: