1

XstreamImplicit は XML に対してのみ機能するため、JSON の @xstreamImplicit を置き換えることができる注釈はありますか?

例えば:

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) ;

これがお役に立てば幸いです。

しかし、これにはいくつかの問題があります。次のリンクを参照してください:

正しい追加 上記の理解のいずれかが間違っている場合。ありがとうございました。

于 2012-12-20T07:26:05.830 に答える
0

JSONチュートリアル の「自己完結型JSONドライバーでルートを削除してJSONに書き込む」に従って、次のように記述できます。

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 に答える