com.alibaba.fastjson

此文仅解释自己,工作遇到的json 和java bean对象转换, 还有byte[]数组 转对象的的一些疑惑.

HashMap<String,Object> map=Maps.newHashMap();
		map.put(new String("88"), new Integer(1));
		map.put(new String("nihao"), new Integer(12));
		//object 转 string
		String jsonString=JSON.toJSONString(map);
		System.out.println(jsonString);
		//string 转 java bean
		HashMap<String, Object> beanMap=JSON.parseObject(jsonString, HashMap.class);
		System.out.println(beanMap);
		
		HashMap<String, Object> byteMap=(HashMap<String, Object>) map.clone();
		byteMap.put(new String("byte"), new Long(87l));
		//java bean 转 byte数组.
		byte[] mapByte=JSON.toJSONBytes(byteMap, SerializerFeature.SortField);
		System.out.println(mapByte);
		//byte[]数组 转 java bean
		HashMap<String, Object> MapByteToJavaBean=JSON.parseObject(mapByte,HashMap.class);
		
		/*以上都不难
		 * 重点是 当byte[]数组转成 string 的时候
		 * 怎么办
		 * 下面完完全全演示 从 java bean 到 byte[]数组 到 string 
		 * 然后 传输最后的string, 在转换成java bean
		 * */
		//1 java bean   
		LinkedHashMap<Object, Object> linkedHashMap=Maps.newLinkedHashMap();
		linkedHashMap.put(UUID.randomUUID().toString(), new ObjectId());
		linkedHashMap.put(UUID.randomUUID().toString(), new ObjectId());
		linkedHashMap.put(UUID.randomUUID().toString(), new ObjectId());
		linkedHashMap.put(UUID.randomUUID().toString(), new ObjectId());
		System.out.println(JSON.toJSONString(linkedHashMap));
		//2. java bean - byte[]数组
		byte[] MapToByteArray=JSON.toJSONBytes(linkedHashMap);
		System.out.println(MapToByteArray.length);
		//3. byte to String 
		String byteArrayToString=JSON.toJSONString(MapToByteArray);
		System.out.println(byteArrayToString);
		//4. 使用base64 把string 转成数组
		byte[] stringToByteArray= com.alibaba.fastjson.util.Base64.decodeFast(byteArrayToString);

		LinkedHashMap<Object,Object> stringToByteArrayToJavaBean= JSON.parseObject(stringToByteArray,LinkedHashMap.class);
		System.out.println(stringToByteArrayToJavaBean);
		//成功, 我们来试试 rocketMQ里面的方法, 先转json字符串,然后换数组.
		String secondJavaBeanToJsonString=JSON.toJSONString(linkedHashMap);
		byte[] bytes=secondJavaBeanToJsonString.getBytes("UTF-8");
		System.out.println(bytes.length);
		//这里可以直接作为参数传输,体积很小
		String jsonBytes=JSON.toJSONString(bytes);
		//当然你也可以进一步把他转成string 然后传输
		LinkedHashMap<Object,Object> linkedHashMap1=JSON.parseObject(bytes,LinkedHashMap.class);
		//over


//总结, 
//感悟:1.如果使用 参数转byte 数组,这样进行网络传输的话 很省流量. 这也就是为什么 rocketMQ支撑亿级队列.
//感悟:2. byte[]转 string 以后如果前后端约定好在固定位插入固定字母/数字 作为混淆, 这也是一种借口参数加密方法; 轻量级加密.不过也很安全了.

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值