У меня есть класс java, уже сериализованный и сохраненный как файл формата .ser, но я хочу получить это преобразование в json-файле (формат .json), это связано с тем, что сериализация кажется неэффективны с точки зрения добавления в прямой форме и, кроме того, приводят к повреждению ошибок, связанных с ошибками потока. Есть ли эффективный способ преобразования этого java-сериализованного файла в формат json.Как преобразовать java-файл в json-файл
ответ
Вы можете прочитать файл .ser
как InputStream
и карта объекта получено с помощью key/value
Gson и запись в файл .json
InputStream ins = new ObjectInputStream(new FileInputStream("c:\\student.ser"));
Student student = (Student) ins.readObject();
Gson gson = new Gson();
// convert java object to JSON format,
// and returned as JSON formatted string
String json = gson.toJson(student);
try {
//write converted json data to a file named "file.json"
FileWriter writer = new FileWriter("c:\\file.json");
writer.write(json);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
Ручное отображение свойств объекта звучит как много работы. Взгляните на Jackson или Gson, которые обеспечивают автоматическое преобразование JSON POJO <->. – dnault
Правильное ручное сопоставление будет жестким в случае большого количества полей, поэтому обновим код для автоматического преобразования из POJO в 'JSON'. – Arpit
В качестве альтернативы сериализации Java и JSON вы можете использовать буферы протокола Google.
В моем ответе в теме пыльник есть обзор того, что ГПБ и как использовать, так что вы можете проверить, что и посмотреть, если он вам подходит:
Там нет стандартного способа сделать это в Java а nd также нет серебряной пули - для этого есть много библиотек. Я предпочитаю джексон https://github.com/FasterXML/jackson
ObjectMapper mapper = new ObjectMapper();
// object == ??? read from *.ser
String s = mapper.writeValueAsString(object);
Вы можете увидеть список библиотек для JSON сериализации/десериализации (для Java и не только для Java) здесь http://json.org/
это потому, что сериализация кажется неэффективным с точки зрения добавления в прямой форме
Не уверен, что JSON является ответом для вас. Не могли бы вы поделиться с нами некоторыми примерами данных и с какими манипуляциями вы с ним работаете?
- 1. Как преобразовать/преобразовать XML в XSN?
- 2. Как преобразовать строку/преобразовать строку в Expr
- 3. Как преобразовать в m4v
- 4. Как преобразовать «,» в строку []
- 5. Как преобразовать в String?
- 6. Как преобразовать 'в'
- 7. C# - Как преобразовать, в
- 8. Как преобразовать '*' в *
- 9. Как преобразовать '(' (...) '(...) ...) в [[...] [...] ...] в Clojure?
- 10. Как преобразовать hexstring в hex?
- 11. Как преобразовать System.Byte [] в Image
- 12. Как преобразовать строку в столбцы?
- 13. как преобразовать arraybuffer в строку
- 14. Как преобразовать тип в golang?
- 15. Как преобразовать строку в массив
- 16. Как преобразовать NSView в CALayer?
- 17. Как преобразовать System.Drawing.Drawing2D.LinearGradientBrush в System.Windows.Media.LinearGradientBrush?
- 18. Как преобразовать DWORD в char *?
- 19. Как преобразовать JSON в строку?
- 20. Как преобразовать int? в int
- 21. Как преобразовать строку в поток?
- 22. Как преобразовать char * в char []
- 23. Как преобразовать SQL в LINQ?
- 24. Как преобразовать String в NSDate?
- 25. Как преобразовать Python в C++?
- 26. Как преобразовать system.drawing.color в строку?
- 27. Как преобразовать аудио в текст?
- 28. Как преобразовать QDeclarativeItem в QImage
- 29. Как преобразовать перечисление в целом
- 30. Как преобразовать время в целое
Если я правильно вас понимаю, сначала вы хотите сериализовать данные в файл, а затем вы хотите преобразовать сериализованные данные в JSON, потому что сериализация неэффективна? Но вы уже сделали сериализацию и заплатили любую цену, которая приходит с ним именно так. – John