use*_*441 4 java arrays serialization deserialization spring-boot
我有两个相关问题:
Run Code Online (Sandbox Code Playgroud)class Employee implements Serializable{ byte[] avroBytes, //avro data in byte[] array String name }
在我的测试用例中,使用 MockMvc,我能够对其进行反序列化,然后将其转换为 Employee 对象,因为我的测试用例可以使用代码中的相同 POJO。然而客户端不会有这个 POJO 或类信息。收到字节后,它如何重建这个 POJO(或其他语言中的等效项)或对象?我需要在标头中发送一些类信息吗?客户端可能使用 Python 或其他某种语言,因此我需要一种使此类信息通用的方法。
在我的测试用例中,这是有效的:
Employee res = (Employee ) SerializationUtils.deserialize(result.getResponse().getContentAsByteArray());
Run Code Online (Sandbox Code Playgroud)
如果客户端没有此 POJO/信息,他们将如何将反序列化字节转换为 Employee?我可以在我的测试用例中执行此操作,因为我的代码中有 Employee 类。
评论的附加信息:
我使用 org.springframework.util.SerializationUtils serialize() 方法对其进行序列化
杰克逊可以解决你的问题。它能够将对象转换为字节数组,然后从字节数组转换为具有类似结构的另一个对象。
转换将按以下方式执行:
Object1 -> JSON -> byte[]
Run Code Online (Sandbox Code Playgroud)
byte[] -> JSON -> Object2
Run Code Online (Sandbox Code Playgroud)
例子:
Object1 -> JSON -> byte[]
Run Code Online (Sandbox Code Playgroud)
Jackson 提供了指定精确转换类型的能力。它是通过中间 JSON 实现的。
| 归档时间: |
|
| 查看次数: |
3018 次 |
| 最近记录: |