问题描述
- 简要描述您碰到的问题。*
Map<String, Object> waveDataMap
其中map中有value的值为byte[]
String data = JSON.toJSONString(waveDataMap)
但是经过JSON转换后byte[]数组里面的值变了,
环境信息
请填写以下信息:*
OS信息: [e.g.:CentOS 8.4.2105 4Core 3.10GHz 16 GB]
JDK信息: [e.g.:Openjdk 1.8.0_312]
版本信息:[e.g.:Fastjson2 2.x.x]
重现步骤
- 如何操作可以重现该问题:*
- 使用
xxx.xxx
方法 - 输入
...
数据 - 出现
...
错误
//可在此输入示例代码
期待的正确结果
- 对您期望发生的结果进行清晰简洁的描述。*
相关日志输出
- 请复制并粘贴任何相关的日志输出。*
附加信息
- 如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。*
5条答案
按热度按时间insrf1ej1#
怎样变了?能举例么?
8xiog9wr2#
您好,感谢您的回复,我现在遇到问题描述主要如下,如您看到希望能得到您的技术支持,谢谢! JAVA程序说明,将不同安全区数据库1表数据通过socket传输到 db2 表中,其中表字段类型包含blob类型,我从数据库中用Map<String, Object>> allWaveData从数据库中取出数据,可以debug看出blob类型数据在map中是byte[]数组存入,然后用String data = JSON.toJSONString(waveDataMap);转换成string,此时已经是char[],通过 PrintWriter 写入socket 服务端, 服务端解析获得string类型客户端传递过来数据,再通过 Map<String, Object> waveDataMap = JSON.parseObject(message, Map.class);发现Map中原blob类型数据是JSONArray[]类型,插入 db2 。最终发现 db2 中的字段值跟原数据库1值不一致,表结构都一致都是blob类型,从原先8.52kb,变成了42.83Kb 原表SQL语句见附件,也有可能不是JSON序列化导致,是不是在传输过程中设计转码什么从字节数组转的一些细节,如果您知道如何解决我的问题,将感激万分,谢谢!!! LiuChuang***@***.*** …
------------------ 原始邮件 ------------------ 发件人: "alibaba/fastjson2"***@***.***>; 发送时间: 2022年10月16日(星期天) 中午11:31***@***.***>;***@***.******@***.***>; 主题: Re: [alibaba/fastjson2] [BUG]Map<String ,Object>其中有部分value值属性为byte[],转换JSON数值变化 (Issue #846) 怎样变了?能举例么? — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID:***@***.***>
iq3niunx3#
JSON不能表示byte[]类型,如果你要传输这种类型数据,建议用其中JSONB API,看这里 https://github.com/alibaba/fastjson2 README中的3.1
qlckcl4x4#
好的,特别感谢!!谢谢 LiuChuang***@***.*** …
------------------ 原始邮件 ------------------ 发件人: "alibaba/fastjson2"***@***.***>; 发送时间: 2022年10月16日(星期天) 中午11:55***@***.***>;***@***.******@***.***>; 主题: Re: [alibaba/fastjson2] [BUG]Map<String ,Object>其中有部分value值属性为byte[],转换JSON数值变化 (Issue #846) JSON不能表示byte[]类型,如果你要传输这种类型数据,建议用其中JSONB API,看这里 https://github.com/alibaba/fastjson2 README中的3.1 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID:***@***.***>
x8goxv8g5#
麻烦再请教一下,可以直接将map通过如下方式序列化吗,其中map的部分value是byte[] byte[] bytes = JSONB.toBytes(waveDataMap); 但是服务端接收后再通过Map<String, Object> waveDataMap = JSONB.parseObject(bytes, Map.class); 反序列化抛错了 谢谢,麻烦了!!!,socket这一块本身写的少不熟悉,再涉及字段属性复杂也不清楚能能否这么封装 LiuChuang***@***.*** …
------------------ 原始邮件 ------------------ 发件人: "alibaba/fastjson2"***@***.***>; 发送时间: 2022年10月16日(星期天) 中午11:55***@***.***>;***@***.******@***.***>; 主题: Re: [alibaba/fastjson2] [BUG]Map<String ,Object>其中有部分value值属性为byte[],转换JSON数值变化 (Issue #846) JSON不能表示byte[]类型,如果你要传输这种类型数据,建议用其中JSONB API,看这里 https://github.com/alibaba/fastjson2 README中的3.1 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID:***@***.***>