在这里介绍下fastJson 的使用,当然在实际开发当中我会结合Server定制的JsonString 进行相关解析工具类的使用(GSON、FastJson),这两种方式,个人还是比较青睐于Google 的gson 解析器!不过我们还是的需要了解和掌握相关的一些解析技术!
以下是FastJson的一些特性:
阿里巴巴的FastJson
Fastjson是一个Java语言编写的高性能的JSON处理器,由阿里巴巴公司开发。
1、无依赖,不需要例外额外的jar类库,能够直接跑在JDK上。
2、FastJson支持普通JDK类包括任意JavaBean Class、Collection、Map、Date。
3、FastJson快速FAST,比其他parse的和生成器,超过所有json库。
(二)、序列化操作方法
/**把JSON文本parse为JavaBean*/
1、public static T parseObject(String text, Class clazz);
/**JSON文本parse成JavaBean集合 */
2、public static List parseArray(String text, Class clazz);
/**JavaBean序列化为JSON文本 */
3、public static String toJSONString(Object object);
/**JSON文本parse为JSONObject或者JSONArray*/
4、public static Object parse(String text);
/**JSON文本parse成JSONObject*/
5、public static JSONObject parseObject(String text);
/**JSON文本parse成JSONArray */
6、public static JSONArray parseArray(String text);
/**JavaBean序列化为带格式的JSON文本*/
7、public static String toJSONString(Object object, boolean prettyFormat);
/**JavaBean转换为JSONObject或者JSONArray*/
8、public static Object toJSON(Object javaObject);
简单的示例如下:
public class MainActivity extends Activity implements OnClickListener {
private Button bt_Start;
String jsonStr = "{\"JACKIE_ZHANG\":\"张学友\",\"ANDY_LAU\":\"刘德华\",\"LIMING\":\"黎明\",\"Aaron_Kwok\":\"郭富城\"}";
String jsonArrays = "[{\"JACKIE_ZHANG\":\"张学友\",\"Aaron_Kwok\":\"郭富城\"},{\"JACKIE_ZHANG\":\"张学友\",\"ANDY_LAU\":\"刘德华\"}]";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
bt_Start = (Button) findViewById(R.id.bt_Start);
bt_Start.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_Start:
// parserJavaBean();
parserJsonArrays();
break;
default:
break;
}
}
private void parserJavaBean() {
User user = FastJsonUtils.getJsonObject(jsonStr, User.class);
Log.d("wangly", user.toString());
String resultString = FastJsonUtils.getSerializeObject(User.class);
Log.d("wangly", "Json 文本" + resultString);
}
public void parserJsonArrays() {
List<User> users = FastJsonUtils.getJsonsArray(jsonArrays, User.class);
for (int i = 0; i < users.size(); i++) {
Log.d("wangly", users.get(i).toString());
}
}
}
JavaBean:
public class User {
private String JACKIE_ZHANG;
private String ANDY_LAU;
private String LIMING;
private String Aaron_Kwok;
public String getJACKIE_ZHANG() {
return JACKIE_ZHANG;
}
public void setJACKIE_ZHANG(String jACKIE_ZHANG) {
JACKIE_ZHANG = jACKIE_ZHANG;
}
public String getANDY_LAU() {
return ANDY_LAU;
}
public void setANDY_LAU(String aNDY_LAU) {
ANDY_LAU = aNDY_LAU;
}
public String getLIMING() {
return LIMING;
}
public void setLIMING(String lIMING) {
LIMING = lIMING;
}
public String getAaron_Kwok() {
return Aaron_Kwok;
}
public void setAaron_Kwok(String aaron_Kwok) {
Aaron_Kwok = aaron_Kwok;
}
@Override
public String toString() {
return "User [JACKIE_ZHANG=" + JACKIE_ZHANG + ", ANDY_LAU=" + ANDY_LAU
+ ", LIMING=" + LIMING + ", Aaron_Kwok=" + Aaron_Kwok + "]";
}
}
为了方便其他Demo、项目使用为此将FastJson 进行了封装:
FastJsonUtils.java
/**
* fastJson 封装工具类
*
* @author Administrator
* @since 2016/4/25
* @version 1.0
*/
public class FastJsonUtils {
/**
* 将JsonString 转换为 JavaBean
*
* @param jsonString
* @param cls
* @return
*/
public static <T> T getJsonObject(String jsonString, Class<T> cls) {
T t = null;
try {
t = JSON.parseObject(jsonString, cls);
} catch (Exception e) {
e.printStackTrace();
}
return t;
}
/**
* 将JsonString 转换为 List<JavaBean>、List<String>
*
* @param jsonString
* @param cls
* @return
*/
public static <T> List<T> getJsonsArray(String jsonString, Class<T> cls) {
List<T> list = new ArrayList<T>();
try {
list = JSON.parseArray(jsonString, cls);
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
/**
* 将JsonString 转换为 List<JavaBean>、List<String>
*
* @param jsonString
* @return
*/
@SuppressWarnings("unchecked")
public static <T> List<T> getJsonArray(String jsonString) {
List<T> list = new ArrayList<T>();
try {
list = (List<T>) JSON.parseArray(jsonString);
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
/**
* 将JsonString 转换为 List<Map<String,Object>>
* @param jsonString
* @return
*/
public static List<Map<String, Object>> getJsonListMap(String jsonString) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
try {
list = JSON.parseObject(jsonString,
new TypeReference<List<Map<String, Object>>>() {
});
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
/**
* 将JavaBean 反序列化为 JsonString 文本
* @param cls
* @return
*/
/**
* 将JavaBean 反序列化为 JsonString 文本
* @param cls
* @return
*/
public static String getSerializeObject(User user){
String jsonString = "";
try {
jsonString = JSON.toJSONString(user);
} catch (Exception e) {
e.printStackTrace();
}
return jsonString;
}
}
到此fastJson 使用介绍已经完毕!最终的效果打印如下: