Java基本数据类型 Docker HTML框架 Pytorch ISP input browser orm stl jwt grunt Parsley Animsition angular视频 jquery去掉空格 matlab停止运行命令 windows杀进程命令 ln函数图像 python集合操作 python循环语句 java删除数组元素 java中scanner java重载和重写的区别 java数组追加 java数组输出 java文件路径 java运行 java日期格式 linux镜像安装 xp系统修复 python入门经典 路由器辐射大吗 销售清单打印软件 sql行转列 stretchcolumns cfqq网吧任务 jdk9下载 天正建筑2007 pr抖动特效 编程电子书
当前位置: 首页 > 学习教程  > 编程语言

2020-08-11json对象中存入字节数组的一个小问题

2020/8/11 20:35:48 文章标签:

    写这篇文章,是因为在实际中遇到了这个问题,主要是json对象中,如果直接存入字节数组:byte[],那么,会默认做一个base64加密,最终存成一个字符串形式。

    下面是一个简单的demo,组成123456的字节数组,存入json对象中:

import java.util.Base64;
import com.alibaba.fastjson.JSONObject;
public class ByteInJsonDemo {
	public static void main(String[] args) {
		// encode
		byte[] b = new byte[] {0x31,0x32,0x33,0x34,0x35,0x36};
		System.out.println(new String(b));          //123456
		JSONObject json = new JSONObject();
		json.put("data", b);
		byte[] b64 = Base64.getEncoder().encode(b);
		String str = new String(b64);
		System.out.println(str);                    //MTIzNDU2
		json.put("realdata", str);
		System.out.println(json);                   //{"data":"MTIzNDU2","realdata":"MTIzNDU2"}
		// decode
		byte[] data = json.getBytes("data");
		System.out.println(new String(data));       //123456
		String value = json.getString("realdata");
		byte[] result = Base64.getDecoder().decode(value);
		System.out.println(new String(result));     //123456
	}
}

    我们如果将json对象最终存入mongo中,我们再来看他的值,会觉着很奇怪,主要是字节数组这里容易让我们产生迷惑。其实如果我们直接json.getBytes("data")就能得到我们原始的字节数组了,另外,如果我们按照字符串来取,那么就需要通过base64解码来还原这个字节数组了。 


本文链接: http://www.dtmao.cc/news_show_100388.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?