如题所示,我们在使用json对象的时候,有的字段是一个JSONArray的情况,我们需要将其转化为byte[],最简单的就是直接遍历每个JSONArray元素,依次赋值给byte[]数组对应的下标元素。
JSONArray的值类似这样[1,2,3],表现形式是一个中括号[]表示的,类似集合,而byte[]数组类型,默认是这样的{1,2,3},表现形式是一个大括号{}表示的,所以不能直接强转类型,比如byte[] a = (byte[])jsonarray。
最笨的办法就是前面提到的,他们之间虽然不能强转,但是都可以遍历,所以直接遍历,就可以给对应的元素赋上值。
这里简单说一下,一些常用的工具类,可以一步转化,而不需要遍历。
package com.xxx.huali.hualitest.json;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.util.Base64;
public class JSONArrary2Bytes {
public static void main(String[] args) {
JSONArray data = new JSONArray();
data.add(49);
data.add(50);
data.add(51);
byte[] byte1 = JSONArray.parseObject(data.toJSONString(), byte[].class);
String jar = JSONArray.toJSONString(byte1);
System.out.println(jar); //"MTIz"
byte1 = JSONArray.parseObject(jar,byte[].class);
System.out.println(JSONArray.toJSONString(byte1)); //"MTIz"
byte1 = Base64.decodeFast(jar);
System.out.println(JSONArray.toJSONString(byte1)); //"MTIz"
byte1 = java.util.Base64.getMimeDecoder().decode(jar);
System.out.println(JSONArray.toJSONString(byte1)); //"MTIz"
}
}
我们知道,byte[]字节数组类型在json中存储,默认会以base64加密的方式存储,所以这里我们在进行JSONArray转byte[]的时候,用到了base64的解码方法,这是可以理解的。