package com.hanchao.base64;
import java.io.IOException;
import java.util.Date;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.commons.codec.binary.Base64;
import com.google.gson.Gson;
import com.hanchao.entity.User;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/***********************
* base64的简单测试
* @author:han
* @version:1.0
* @created:2014-3-3
***********************
*/
public class Test1 {
public static void main(String[] args) throws Exception {
/**
* sun BASE64
*/
//encode...
String src = "BASE64编码测试";
BASE64Encoder en = new BASE64Encoder();
String encodeStr = en.encode(src.getBytes());
System.out.println("encodeStr:" + encodeStr);
//decode...
BASE64Decoder dec = new BASE64Decoder();
byte[] data = dec.decodeBuffer(encodeStr);
System.out.println("decodeStr:" + new String(data));
//封装以后
String src2 = "{\"retCode\": \"100\", \"retMessage\": \"接收成功\"}";
String encodeStr2 = getBASE64(src2);
System.out.println("encodeStr2 : " + encodeStr2);
String decodeStr2 = getFromBASE64(encodeStr2);
System.out.println("decodeStr2 : " + decodeStr2);
/**
* apache ... base64...
*/
//encode...
String src3 = "BASE64编码测试";
String encodeStr3 = new String(Base64.encodeBase64(src3.getBytes()));
System.out.println("encodeStr3 : " + encodeStr3);
String decodeStr3 = new String(Base64.decodeBase64(encodeStr3));
System.out.println("decodeStr3 : " + decodeStr3);
//封装后
String src4 = "{\"retCode\": \"100\", \"retMessage\": \"接收成功\"}";
String encodeStr4 = getBase64(src4);
System.out.println("encodeStr4:" + encodeStr4);
String decodeStr4 = getFromBase64(encodeStr4);
System.out.println("decodeStr4:" + decodeStr4);
/**
* 以下是java解析json的小例子
*/
String json = "{'id':1," +
"'username':{'tom':'tom','jerry':'jerry'}," +
"'address':[{'us':'usa','cancada':'canada'},{'chi':'china','aus':'aus'}]}";
//字符串
JSONObject jo = JSONObject.fromObject(json);
System.out.println("1--:" + jo.get("id"));
//对象
JSONObject uObject = jo.getJSONObject("username");
System.out.println("2--username:" + uObject);
System.out.println("2--username:" + uObject.get("tom"));
System.out.println("2--username:" + uObject.get("jerry"));
//数组
JSONArray addressArray = jo.getJSONArray("address");
System.out.println("3--:" + addressArray.getJSONObject(0));
System.out.println("3--:" + addressArray.getJSONObject(0).get("us"));
System.out.println("3--:" + addressArray.getJSONObject(1).get("chi"));
/**
* 转换成json
*/
User user = new User();
user.setId(123);
user.setUsername("hanchao");
user.setPassword("123456");
user.setRegDate(new Date());
String uJson = JSONObject.fromObject(user).toString();
System.out.println("user转换成json后:" + uJson);
//使用gson
Gson gson = new Gson();
String uJson2 = gson.toJson(user);
System.out.println("使用gson转换对象为json:" + uJson2);
//使用gson解析json
//可以参考下:http://blog.sina.com.cn/s/blog_7ffb8dd501013q9c.html
//参考下:http://jingyan.baidu.com/article/e8cdb32b619f8437042bad53.html
/**
* 将json转换为对象bean
*/
User userGsonBean = gson.fromJson(uJson2, User.class); //此处如果用uJson就会出现错误
System.out.println("id:" + userGsonBean.getId() + ", username:" + userGsonBean.getUsername() + ", regdate:" + userGsonBean.getRegDate());
//使用jsonObject
User userJSONObjectBean = (User) JSONObject.toBean(JSONObject.fromObject(uJson), User.class);//可以是uJson2
System.out.println("id:" + userJSONObjectBean.getId() + ", username:" + userJSONObjectBean.getUsername() + ", regdate:" + userJSONObjectBean.getRegDate());
}
/**
* 将s进行BASE64编码
* *******************
* @author: han
* 2014-3-3
* *******************
* @param s 要编码的字符串
* @return
*/
public static String getBASE64(String s) {
if(s == null) {
return null;
}
return new BASE64Encoder().encode(s.getBytes());
}
/**
* 将s进行Apache Base64编码
* *******************
* @author: han
* 2014-3-3
* *******************
* @param s
* @return
*/
public static String getBase64(String s) {
if(s == null) {
return null;
}
return new String(Base64.encodeBase64(s.getBytes()));
}
/**
* 将BASE64的字符串s进行解码
* *******************
* @author: han
* 2014-3-3
* *******************
* @param s
* @return
*/
public static String getFromBASE64(String s) {
if(s == null) {
return null;
}
BASE64Decoder decoder = new BASE64Decoder();
byte[] b;
try {
b = decoder.decodeBuffer(s);
return new String(b);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
/**
* 将apache base64的字符串s进行解码
* *******************
* @author: han
* 2014-3-3
* *******************
* @param s
* @return
*/
public static String getFromBase64(String s) {
if(s == null) {
return null;
}
return new String(Base64.decodeBase64(s.getBytes()));
}
}
如果要涉及字符编码,可以这样:
public static String getFromBase64(String s) {
if(s == null) {
return null;
}
try {
return new String(Base64.decodeBase64(s.getBytes()),"GBK");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return s.toString();
}
}
public static String getBase64(String s) {
if(s == null) {
return null;
}
try {
return new String(Base64.encodeBase64(s.getBytes()),"GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return s.toString();
}
}
转载于:https://blog.51cto.com/hanchaohan/1366671