1

Java中的MessagePack官方实现将公共字段序列化为数组是否可以接受?

这个“像 JSON”在哪个宇宙中?

我的情况:我有一个像这样的简单类:

@Message
public class MySuperClass(){
    public int mySuperID; // let's say 4
    public byte[] mySuperData; // let's say nothing
    public String mySuperType; // let's say null
    public String mySuperExtra; // let's say HI!

    public MySuperClass(){}

    // other constructors
}

我只是在序列化

MessagePack msgpack = new MessagePack();
msgpack.write(mySuperInstance);

并将其发送到用 NodeJS 编写的远程服务器。

Node JS 可以轻松解压,

['HI!', �, 4, null]

这意味着 MessagePack 与 JSON 完全不同,因为它将 Java 对象解析为数组,然后仅按字母顺序重新填充它们!

有没有人有一个不包括映射我拥有的每个对象的解决方案?(也 HashMap 不能被 Node 解包,这意味着 messagePack 不是跨平台的,因此,重复,像 JSON 一样注意)

4

1 回答 1

1

从我的 MessagePack 经验来看,它通常将对象视为 MessagePack 映射。

它不使用任何特定于语言的结构,因此它是跨平台的。

我认为您可能会因为您使用的库而遇到问题。你应该考虑官方的。你可以在这里阅读更多关于它的信息。它基本上是 Jackson 的一个扩展,它让我们直接从 MessagePack 序列化和反序列化 Java 对象并且正在工作(至少在我不得不使用它时)。

于 2016-03-10T16:35:13.323 回答