1
json string -> java byte[] 仅支持内置的base64?
package com.l1yp;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.ParserConfig;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.l1yp.util.JsonTool;
import com.qq.protocol.pb.ByteArrayDeserializer;
import com.qq.protocol.pb.serializer.ByteArraySerializer;
import java.util.Arrays;
import java.util.Map;
/**
* @Author Lyp
* @Date 2020/7/11
* @Email l1yp@qq.com
*/
public class FastjsonTest {
private static class User {
public Map<String, byte[]> key;
}
public static void main(String[] args) {
ParserConfig.getGlobalInstance().putDeserializer(byte[].class, new ByteArrayDeserializer());
String json = """
{"key": {"data":"01020304"}}
""";
User user1 = JSONObject.parseObject(json, User.class);
System.out.println("user1 = " + user1);
}
}
public class ByteArrayDeserializer implements ObjectDeserializer {
@Override
public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
if (type == byte[].class){
return (T) HexUtil.hex2bin(parser.getLexer().stringVal());
}
throw new UnsupportedOperationException("不支持的类型");
}
@Override
public int getFastMatchToken() {
return 0;
}
}