初次接触java 和 android 学了一个多月,学到 android 解析 json 字符串,感觉真心难用,可能是我刚接触吧,好用的方法还没见到,自己写了个简单的javabean解析工具类粘上来,记录着。
package com.example.jsonparse;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
* 简单json 解析类
* @author SUNXU
*
*/
public class SimpleJsonParse {
/**
* [{"key":"val","key":"val",...},{}] 解析这种格式
* @param str 需要解析的字符串
* @param cls 需要放到的 JavaBean 的class对象
* @return 返回 List<Object> Object 使用需要强转成 传入的javaBean 对象类型
* @throws JSONException
* @throws InstantiationException
* @throws IllegalAccessException
*/
public static List<Object> parseJsonArrayToObj(String str,Class cls) throws JSONException, InstantiationException, IllegalAccessException{
Field[] fields = cls.getDeclaredFields();
JSONArray jsonArr = new JSONArray(str);
List<Object> list = new ArrayList<Object>();
for( int i = 0 ; i < jsonArr.length() ; ++i ){
JSONObject jsonObj = jsonArr.getJSONObject(i);
Object obj = cls.newInstance();
for( Field f : fields ){
f.setAccessible(true);
f.getType();
f.set(obj, jsonObj.get(f.getName()));
}
list.add(obj);
}
return list;
}
/**
* {"key":"val","key":"val",...} 解析这格式
* @param str 需要解析的字符串
* @param cls 需要放到的 JavaBean 的class对象
* @return Object 需要强转成 传入的javaBean 对象类型
* @throws JSONException
* @throws InstantiationException
* @throws IllegalAccessException
*/
public static Object parseJsonObjToObj(String str,Class cls) throws JSONException, InstantiationException, IllegalAccessException{
Field[] fields = cls.getDeclaredFields();
JSONObject jsonObj = new JSONObject(str);
Object obj = cls.newInstance();
for( Field f : fields ){
f.setAccessible(true);
f.getType();
f.set(obj, jsonObj.get(f.getName()));
}
return obj;
}
public static String parseMapToJsonArray( List<Map<String, String>> list ){
JSONArray jsonArray = new JSONArray();
for( Map<String, String> map : list ){
JSONObject json = new JSONObject(map);
jsonArray.put(json);
}
return jsonArray.toString();
}
public static String parseMapToJsonObj( HashMap<String, String> map ){
JSONObject json = new JSONObject(map);
return json.toString();
}
}