`

blob,base64互转;私有方法的测试;GSon的坑

 
阅读更多
总结一下目前手头的项目~发现不少知识点的盲区,如下。做个小笔记方便以后复用。
 
blob,base64互转
最开始编码解码用的是原生base64,encode因为直接从数据库拿到的blob传进入,不允许强转,遂用流重写之;
而decode存入数据库图片打开有问题,就也换了。查了好久没查到导致的原因,总之它可以工作了。
return Base64.decodeBase64(base64Str);
return Base64.encodeBase64String(bytes);
/**
 * blob转base64
 * @param blob
 * @return
 */
public static String convertBlobToBase64String(Blob blob) {
    String result = "";
    if(null != blob) {
        try {
            InputStream msgContent = blob.getBinaryStream();
            ByteArrayOutputStream output = new ByteArrayOutputStream();
            byte[] buffer = new byte[100];
            int n = 0;
            while (-1 != (n = msgContent.read(buffer))) {
                output.write(buffer, 0, n);
            }
            result =new BASE64Encoder().encode(output.toByteArray()) ;
            output.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;

    }else {
        return null;
    }
}

/**
 * base64转blob
 * @param str
 * @return
 */
public static byte[] transformBase64(String str) {
    BASE64Decoder decode = new BASE64Decoder();
    byte[] b = null;
    try {
        b = decode.decodeBuffer(str);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return b;
}
 私有方法的测试
@Test
public void test_方法名(){
    try{
//创建类
        ServiceClass service = new ServiceClass();
//指定方法
        Method method = ServiceClass.class.getDeclaredMethod("方法名", 参数类型.class);
//允许反射调用私有方法
        method.setAccessible(true);
        //执行
        System.out.println(method.invoke(service, 参数···));
    }catch(Exception ex){
        ex.printStackTrace();
    }
}
GSon的坑
用GSon处理json数据发现这个工具有些比较坑的地方。
比如转换“201609121830”这样的时间字段,会变成科学计数法,很崩溃。只有用new BigDecimal((Double) paramMap.get("DATE")).toString()这样的方法,让它正常显示。
 
再比如,转换时遇上空字段直接抛错,可以重写原生的一些方法来避免,但不知道为什么调试的时候总是进不去这个方法,网上的教材也是大同小异的,调用方法也很简单,看不出什么错误。遂崩溃,换了Jackson~
/**
 * JSON转HashMap
 * @param jsonStr
 * @return
 * @throws Exception
 */
public static Map<String, Map<String, Object>> JSON2HashMap(String jsonStr) throws Exception{
    ObjectMapper objectMapper = new ObjectMapper();
    Map<String, Map<String, Object>> maps = objectMapper.readValue(jsonStr, Map.class转换的格式);
    return maps;
}
 
 
map转json也很简单
ObjectMapper mapper = new ObjectMapper();  
String json = mapper.writeValueAsString(map);  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics