메시지 팩을 android에서 사용하면 클래스를 직렬화/역 직렬화 할 수 있지만 절대적으로 맞지는 않습니다. .MessagePack 안드로이드에서 객체 에러가 발생했습니다.
간단한 테스트 클래스 :
@Message
public class Account {
public String Code;
public int Sequence;
public float Lot;
public String toString(){
return "Seq:"+Sequence;
}
}
테스트 코드 :
MessagePack msgpack = new MessagePack();
msgpack.register(Account.class);
try {
Account a = new Account();
a.Code ="name";
a.Sequence = 105;
a.Lot = (float)1.05;
byte[] b = msgpack.write(a);
//byte[] c = MessagePack.pack(a);
Account aa = msgpack.read(b, Account.class);
System.out.println(new String(b));
System.out.println("test00: aa.Lot "+aa.Lot);
}catch(IOException e){
e.printStackTrace();
}
실행 한 후에 "바이트 [] B = msgpack.write (a);" [] B 출력 바이트 배열 안드로이드 (자바 비교)
[-109, -92, 110, 97, 109, 101, 105, -54, 63, -122, 102, 102] on java
[-109, -92, 110, 97, 109, 101, -54, 63, -122, 102, 102, 105] on android
I 검토가 Using MessagePack with Android
링크가 작동하지 않습니다. 이것은 여전히 객체 순서의 경우입니까? –
예, 그들은 오래된 bugtracker를 닫았습니다 ... 나는 문제가 여전히 존재한다고 생각합니다. 이를 고치는 방법은'@index' 주석을 사용하는 것입니다. https://github.com/msgpack/msgpack-java/issues/56 및 https://github.com/msgpack/msgpack-java/issues/98을 참조하십시오. – catwell