LINUX.ORG.RU

с каждой твоей темой я все больше склоняюсь к тому что не твои поделки надо защищать от людей, а людей от твоих изделий

Deleted
()
Ответ на: комментарий от Deleted

Если хочешь Ъ-борщ — сериализуй в S-expressions.

anonymous
()
Ответ на: комментарий от iZEN

Вряд ли. Сериализация не в бинарном виде не очень хороша, она избыточна в плане объема данных получаемых на выходе. JSON хорош в RESTfull интерфейсах, например, но никак не при сериализации объектов для хранения на диске. Хотя бы потому что у тебя есть кэш для записи на диск лимитирован по объему и лучше бы в этот кэш влезать.

xpahos ★★★★★
()
Ответ на: комментарий от xpahos

С каких пор протобаф стал паковать в строку?

понял, что тс не знает, чего хочет, так что пб пойдет)

cdshines ★★★★★
()
Последнее исправление: cdshines (всего исправлений: 1)
String s = myAbject.toString();
MyAbject yourAbject = new MyAbject(s);
anonymous
()

ToSerialize.java (Класс, объекты которого нужно трансформировать в строку):

import java.io.Serializable;
//Главное условие для сериализации - реализация интерфейса Serializable
public class ToSerialize implements Serializable{
    private String name;
    ToSerialize(String name){
        this.name = name;
    }
    
    public String toString(){
        return name;
    }
}

Serializator.java:

import javax.xml.bind.DatatypeConverter;
import java.io.*;

public class Serializator {
    public static String serialize(Serializable o){
        ByteArrayOutputStream bas = new ByteArrayOutputStream();
        String out = null;
        try {
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(bas);
            objectOutputStream.writeObject(o);
            out = DatatypeConverter.printBase64Binary(bas.toByteArray());
        } catch (IOException e) {
            
        }
        return out;
    }
    
    public static Object deserialize(String str){
        byte[] bytes = DatatypeConverter.parseBase64Binary(str);
        ByteArrayInputStream bias = new ByteArrayInputStream(bytes);
        Object obj = null;
        try {
            ObjectInputStream objectInputStream = new ObjectInputStream(bias);
            obj = objectInputStream.readObject();
        } catch (IOException e) {
            
        } catch (ClassNotFoundException e) {
            
        }
        return obj;
    }
    
    public static void main(String[] args){
        ToSerialize ts = new ToSerialize("Test");
        String base64 = serialize(ts);
        System.out.println(base64); //выведет строку, хранящую объект ts
        ToSerialize serialize = (ToSerialize) deserialize(base64); //преобразует строку в нужный объект
        System.out.println(serialize);
    }
}

r0ck3r ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.