2016-02-25 2 views
0

Я хочу сохранить объект Java (состояние объекта) или отправить ему другое приложение с использованием сетевого потока. Я пришел с двумя вариантами Как у меня есть этот объект поддержкиGson vs JAXB для сохранения java-объекта (состояние объекта)

Note note = new Note(); 
note.setId(123); 
note.setName("Test Name"); 

1. GSON

String json = new GsonBuilder().create().toJson(note); 
Systme.out.println(json); 

2. JAXB

JAXBContext jaxbContext = JAXBContext 
      .newInstance(Note.class); 
Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); 
jaxbMarshaller.setProperty(Marshaller.JAXB_FRAGMENT, true); 
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 
StringWriter sw = new StringWriter(); 
jaxbMarshaller.marshal(note, sw); 
String xmlString = sw.toString(); 
System.out.println(xmlString); 

Как Gson эти

Gson gson = new GsonBuilder().registerTypeAdapter(Id.class, new IdTypeAdapter()).enableComplexMapKeySerialization().serializeNulls().setDateFormat(DateFormat.LONG).setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).setPrettyPrinting().setVersion(1.0).create(); 

Какой из них рекомендуется? С точки зрения:

  1. Поддержка версий
  2. поле Именование поддержка
  3. обнажая или игнорировании поле

    и т.д.

ответ

0

После изучения достаточно, я обнаружил, что Gson лучше, чем JAXB.

Он поддерживает многие вещи, которые JAXB не может.

  1. поле аннотаций не требуется Gson, в отличие от JAXB.
  2. Gson поддерживает, Сериализация и типы десериализации Generic
  3. сериализации и десериализации Коллекция с объектами произвольного типа
  4. Пользовательские сериализации и десериализации
  5. Null Поддержка объекта
  6. Versioning поддержки
  7. Без учета полей сериализации и десериализация

GSON выигрывает !!!

Подробнее см. Gson doc

Смежные вопросы