Napisałem kod do serializacji obiektów do JSON i BSON. Według moich wyników produkowany BSON jest większy niż JSON. Czy to jest oczekiwane?Który z nich jest lżejszy, JSON lub BSON?
Z mojego kodu dla Bson.class
(z użyciem Jackson i bson4jackson)
private ByteArrayOutputStream baos = new ByteArrayOutputStream();
private BsonFactory fac = new BsonFactory();
private ObjectMapper mapper = new ObjectMapper(fac);
public Bson(Object obj) throws JsonGenerationException,
JsonMappingException, IOException {
mapper.writeValue(baos, obj);
}
public int size() {
return baos.size();
}
public String toString() {
byte[] bytes = baos.toByteArray();
return new String(bytes);
}
z mojego Json.class
private ByteArrayOutputStream baos = new ByteArrayOutputStream();
private ObjectMapper mapper = new ObjectMapper();
public Json(Object obj) throws JsonGenerationException,
JsonMappingException, IOException {
mapper.writeValue(baos, obj);
}
(size()
i toString()
jak wyżej)
moich POJOs ciągu ponownie Person.class
i Address.class
.
W moim główne klasy:
Address a = new Address("Jln Koli", "90121", "Vila", "Belgium");
Person p = new Person("Ali Bin Baba", new Date(), 90.0, 12, a);
List<Person> persons = new LinkedList<>();
persons.add(p);
persons.add(p);
Bson bson = new Bson(persons);
Json json = new Json(persons);
System.out.println("Bson : " + bson.size() + ", data : " + bson.toString());
System.out.println("Json : " + json.size() + ", data : " + json.toString());
ouput:
Bson : 301, data : -
Json : 285, data : [{"name":"Ali Bin Baba","birthd...
Moje pytanie:
- Czy to wyjście prawdziwe, czy mój kod w rong?
- Jakąkolwiek sugestię, aby sprawdzić/przetestować, porównać rozmiary BSON i JSON?
Chciałbym spróbować odkodować wygenerowane dane. Zakładam, że BSon jest szybszy do dekodowania, a nie bardziej zwarty. –
Jeśli chcesz gęstego formatu i używasz Javy, zdecydowanie idź na bufory protokołów, są one o wiele bardziej kompaktowe niż jedno i są znacznie szybsze, chociaż wymagają schematu. –