Skip to content

Instantly share code, notes, and snippets.

@vincent1086
Created September 10, 2015 11:13
Show Gist options
  • Save vincent1086/3afa1ea2246b07aef0f5 to your computer and use it in GitHub Desktop.
Save vincent1086/3afa1ea2246b07aef0f5 to your computer and use it in GitHub Desktop.
ArrayList to Serializer
public class ObjectSerializer {
public static String serialize(Serializable obj) throws IOException {
if (obj == null){
return "";
}
try {
ByteArrayOutputStream serialObj = new ByteArrayOutputStream();
ObjectOutputStream objStream = new ObjectOutputStream(serialObj);
objStream.writeObject(obj);
objStream.close();
return encodeBytes(serialObj.toByteArray());
} catch (Exception e) {
DebugUtils.i("Serialization error: " + e.getMessage());
}
return "";
}
public static Object deserialize(String str) throws IOException {
if (str == null || str.length() == 0){
return null;
}
try {
ByteArrayInputStream serialObj = new ByteArrayInputStream(decodeBytes(str));
ObjectInputStream objStream = new ObjectInputStream(serialObj);
return objStream.readObject();
} catch (Exception e) {
DebugUtils.i("Deserialization error: " + e.getMessage());
}
return null;
}
public static String encodeBytes(byte[] bytes) {
StringBuffer strBuf = new StringBuffer();
for (int i = 0; i < bytes.length; i++) {
strBuf.append((char) (((bytes[i] >> 4) & 0xF) + ((int) 'a')));
strBuf.append((char) (((bytes[i]) & 0xF) + ((int) 'a')));
}
return strBuf.toString();
}
public static byte[] decodeBytes(String str) {
byte[] bytes = new byte[str.length() / 2];
for (int i = 0; i < str.length(); i+=2) {
char c = str.charAt(i);
bytes[i/2] = (byte) ((c - 'a') << 4);
c = str.charAt(i+1);
bytes[i/2] += (c - 'a');
}
return bytes;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment