Skip to content

Instantly share code, notes, and snippets.

@takawitter
Last active December 14, 2015 04:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save takawitter/5029844 to your computer and use it in GitHub Desktop.
Save takawitter/5029844 to your computer and use it in GitHub Desktop.
MessagePack JavaでListを使うテスト。
public class MsgPackTest {
public static void main(String[] args) throws Exception {
MessagePack msgpack = new MessagePack();
List<String> lines = Arrays.asList("hello", "world");
byte[] bytes = msgpack.write(lines);
msgpack.register(List.class, new ListTemplate(ValueTemplate.getInstance()));
for(Value v: (List<Value>)msgpack.read(bytes, List.class)){
System.out.println(new String(v.asRawValue().getByteArray(), "UTF-8"));
}
}
}
@takawitter
Copy link
Author

実行するとこうなる。

Exception in thread "main" org.msgpack.MessageTypeException: convert into unknown type is invalid
at org.msgpack.template.AnyTemplate.read(AnyTemplate.java:52)
at org.msgpack.template.AbstractTemplate.read(AbstractTemplate.java:31)
at org.msgpack.template.ListTemplate.read(ListTemplate.java:66)
at org.msgpack.template.ListTemplate.read(ListTemplate.java:27)
at org.msgpack.template.AbstractTemplate.read(AbstractTemplate.java:31)
at org.msgpack.MessagePack.read(MessagePack.java:388)
at org.msgpack.MessagePack.read(MessagePack.java:371)
at MsgPackTest.main(MsgPackTest.java:19)

@takawitter
Copy link
Author

例外出ないように修正。ListTemplateとValueTemplate使えば例外は出ない(値の取り出しはめんどい)。
中身がStringに限定されてるんであれば、new ListTemplate(StringTemplate.getInstance())でもいける。
ただそうじゃないListもある場合、MessagePackオブジェクトは使い回しできない。
なんか微妙な感じだな。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment