Какие библиотеки Java JSON хорошо используют аннотации JAXB? - PullRequest
6 голосов
/ 06 сентября 2011

Я занимаюсь разработкой проекта, который уже использует сериализацию XML, поэтому мне нужно элегантное решение для поддержки JSON путем повторного использования аннотаций JAXB.

Может кто-нибудь порекомендовать некоторые библиотеки Java JSON, которые хорошо подходят для JAXBаннотации?Легкие библиотеки предпочтительнее.

Ответы [ 3 ]

4 голосов
/ 06 сентября 2011

Примечание: Я EclipseLink JAXB (MOXy) , и член JAXB ( JSR-222 ) экспертная группа.

Проверьте привязку JSON, добавляемую в EclipseLink JAXB (MOXy). Мы используем не только аннотации JAXB, но и API-интерфейсы среды выполнения:

package blog.json.twitter;

import java.util.Date;    
import javax.xml.bind.*;
import javax.xml.transform.stream.StreamSource;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(SearchResults.class);

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        unmarshaller.setProperty("eclipselink.media.type", "application/json");
        StreamSource source = new StreamSource("http://search.twitter.com/search.json?q=jaxb");
        JAXBElement<SearchResults> jaxbElement = unmarshaller.unmarshal(source, SearchResults.class);

        Result result = new Result();
        result.setCreatedAt(new Date());
        result.setFromUser("bdoughan");
        result.setText("You can now use EclipseLink JAXB (MOXy) with JSON :)");
        jaxbElement.getValue().getResults().add(result);

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.setProperty("eclipselink.media.type", "application/json");
        marshaller.marshal(jaxbElement, System.out);
    }

}

В дополнение к аннотациям JAXB поддерживаются расширения MOXy (такие как @XmlPath), что делает еще проще иметь одну аннотированную модель, которую можно использовать как для XML, так и для JSON:

3 голосов
/ 06 сентября 2011

Я бы использовал Джексон . Кажется, у него есть хорошая поддержка JAXB из коробки.

Справка:

2 голосов
/ 06 сентября 2011

Apache Jersey имеет приличную поддержку JAXB. Я бы порекомендовал вам взглянуть на следующую дискуссию о ее внутреннем сообщении *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...