0

私が使うとき

new XStream().toXml(someObject);

次のxmlを返します...

<response>
        <status>SUCCESS</status>
        <isOwnershipVerified class="boolean">false</isOwnershipVerified>
</response>

そして、私が使用するとき

new XStream(new JsonHierarchicalStreamDriver()).toXml(someObject);

次のjsonを返します...

{"response": {
  "status": "SUCCESS",
  "isOwnershipVerified": {
    "@class": "boolean""false"}
}}

さて、クラス属性を完全に取り除きたいので(他のものとエイリアスするのではなく、それを削除するために読んでください)、次のコードを使用します。

    XStream xStream = new XStream();
    StringWriter writer = new StringWriter();
    xStream.marshal(this, new PrettyPrintWriter(writer) {
        @Override
        public void addAttribute(final String key, final String value)
        {
            if (!key.equals("class"))
            {
                super.addAttribute(key, value);
            }
        }
    });
    return writer.toString();

次のxmlを提供します...

<response>
        <status>SUCCESS</status>
        <isOwnershipVerified>false</isOwnershipVerified>
</response>

しかし、上記の xStream オブジェクトの作成中に new JsonHierarchicalStreamDriver() を渡すと、json が返されません。上記と同じ xml を返します。

ここで何が間違っているのですか?

前もって感謝します...

4

1 に答える 1

0

私はそれを考え出した...

使用する代わりに

new PrettyPrintWriter(writer) ...

使用する

new JsonHierarchicalStreamWriter(writer)

そして、物事は期待どおりに機能し始めます... :D

于 2010-04-20T14:49:36.227 に答える