1

我们是否有任何注释可以替换 JSON 的 @xstreamImplicit,因为 XstreamImplicit 仅适用于 XML?

例如:

Class A {

  @XstreamImplicit
  private List<Apple> apples;
}

XML:

<apple>
  .....
  .....
</apple>
<apple>
   ....
   ....
</apple>

JSON:

{ apples: [{...}] }

我想要以下格式的 JSON 输出:

[{...}]
4

2 回答 2

0

尝试做一些这样的事情,

我不赞成这种方法在从由此获得的字符串重新创建对象时工作正常。

Class A {

  private List<Apple> apples;
  public static void setXstreamAlias(XStream xstream)
      xstream.alias("apples", List.class, Apple.class);
      xstream.addImplicitArray(A.class, "apples");
  }
}

在您对该对象进行字符串序列化之前,应调用此方法。

像这样,

A a = new A();
// setting some values to your apple here...
.
.
.

// finally
XStream xstream;
xstream = new XStream(new JettisonMappedXmlDriver());
xstream.setMode(XStream.NO_REFERENCES);
A.setXstreamAlias(xstream);
String output = xstream.toXML(a) ;

我希望这对你有帮助,

但这有一些问题,请通过此链接:https ://stackoverflow.com/questions/13966871/xstream-json-arraylist-handling-after-xstreamimplicit-the-arraylist-variable

添加正确如果我错了上述任何理解。谢谢你。

于 2012-12-20T07:26:05.830 回答
0

根据JSON 教程中的“Write to JSON with the self-contained JSON driver drop the root”,您可以编写如下内容:

XStream xstream = new XStream(new JsonHierarchicalStreamDriver() {
    public HierarchicalStreamWriter createWriter(Writer writer) {
        return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE);
    }
});
于 2012-12-04T13:13:33.743 回答