Androidにおけるjsonからobjectおよびobjectからjsonへの解析
モバイルアプリケーションの開発では,jsonオブジェクトが解析しやすく,リソース占有が小さいため,広範なアプリケーションが得られ,1つのjsonオブジェクトをobjectに直接解析する方法やobjectオブジェクトを直接jsonオブジェクトに変換する方法が応用されることが多い.Googleにはgsonのライブラリがありますが、使用中に解析エラーが発生した場合、空のポインタを返しただけで、エラーの原因をさらに提示していないことに気づきました.このように、デバッグプログラムやインタフェースをデバッグする際に不便になります.考えてみると、自分で方法を実現しました.効果だけでなく、アドバイスをお願いします.多く指摘して、絶えず改善することができることを望みます.
package com.xxx.xxxxxxxx;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONStringer;
import android.util.Log;
final public class JSONTools {
final public static Object json2Object(JSONObject jsonObject, Class> cls) {
if (jsonObject == null || cls == null) {
throw new NullPointerException("json2Object(JSONObject jsonObject, Class> cls), parameters "
+ (jsonObject == null ? "jsonObject is null" : "cls is null"));
}
Object retData = null;
try {
retData = cls.newInstance();
} catch (InstantiationException e1) {
e1.printStackTrace();
return retData;
} catch (IllegalAccessException e1) {
e1.printStackTrace();
return retData;
}
Field[] fields = cls.getDeclaredFields();
for (Field f : fields) {
f.setAccessible(true);
Class> tmpCls = f.getType();
Log.d("tmpCls", tmpCls.getName());
try {
if (tmpCls.isAssignableFrom(List.class)) {
JSONArray array = jsonObject.getJSONArray(f.getName());
int size = array.length();
JSONObject obj = array.optJSONObject(0);
List