Проблема с XStream Marshalling для возврата xml и json - PullRequest
0 голосов
/ 20 апреля 2010

Когда я использую

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>

но, когда я передаю новый JsonHierarchicalStreamDriver () во время создания объекта xStream выше, он НЕ возвращает json. он возвращает тот же XML, показанный выше.

Что здесь происходит не так?

Заранее спасибо ...

1 Ответ

0 голосов
/ 20 апреля 2010

Я понял это ...

вместо использования

new PrettyPrintWriter(writer) ...

использовать

new JsonHierarchicalStreamWriter(writer)

и все начнет работать как положено ...: D

...