FastJson 的JSON.toJSON方法吃掉了Map的key
public static void main(String[] args) {
File file = new File("C://Users//Desktop//test.jpg");
try (InputStream inputStream = new FileInputStream(file)) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
IOUtils.copy(inputStream, byteArrayOutputStream);
byte[] bytes = byteArrayOutputStream.toByteArray();
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
Map<String, Object> map = Maps.newHashMap();
map.put("test", byteArrayInputStream);
Object object = JSON.toJSON(map);
System.out.println();
}catch (Exception e){
}
}
当执行上段代码时,我惊奇地发现经过toJson方法后,获得的object的value竟然是空的,我断点进JSON里看过,在处理value时又进行了一次toJSON的操作,然后一次序列之后,value消失了
不知道是不是和ByteArrayInputStream的序列化有关,希望大神帮忙解答一下,十分感谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
倒不是
FastJson
吃掉了Map
的key
,而是可能要明白序列化的意义哈序列化不就是为了把对象转换成字节,然后方便存储,传输么
反序列化不就是为了把字节转换为对象,或者数据应该有的表现形式
因此那
stream
里的各种InputStream
和OutputStream
实现本身就是字节序列啊,还有啥可序列化的呢比如你就是读图片噻,图片你看着是图片的样子,但是你代码去读还是只能按照字节去读,这个就是反序列化了嘛
因此不是
FastJson
吃掉了Map
的key
,是人家压根就不会考虑处理stream
(就像你本来就结婚扯证,但还要跑去民政局去扯结婚证,不要冒充单身狗哈~)