Android開発のJSONデータ解析
5414 ワード
Android開発で出会ったJsonデータ解析は、本人がシステムで提供した解析もアリが提供したfastJson、第三者のGson、JackJsonも使用したことがある.しかし、その解析が一番使いやすいのは、私はまだ白いと言っています.今日、大牛博文を見て、このいくつかの解析の性能を分析しました.JackJsonの消費時間は最も短いです.私はこの方面の知識を再整理して、次のツール類JackJsonFactoryがあります.java:
もちろんGsonに対して揺るぎない人も少なくないが、汎用解析では以下の問題に直面する可能性がある.com.google.gson.internal.LinkedTreeMap cannot be cast to test.UserBean at t..以下に関連する解析方法を示します.
もちろん、JackJsonのようにパラメータを伝えたいなら、コードは以下の通りです.
import java.io.IOException;
import java.util.ArrayList;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
@SuppressWarnings("unchecked")
public class JackJsonFactory {
private static JackJsonFactory mJackJsonFactory;
private ObjectMapper mObjectMapper;
public JackJsonFactory(){
mObjectMapper=new ObjectMapper();
}
public static JackJsonFactory getInstance(){
if(mJackJsonFactory==null){
synchronized (JackJsonFactory.class) {
if(mJackJsonFactory==null){
mJackJsonFactory=new JackJsonFactory();
}
}
}
return mJackJsonFactory;
}
public String toJson(Object mObject){
String result="";
try {
result=mObjectMapper.writeValueAsString(mObject);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
public <T> T fromJson(String json,T t){
T result=null;
try {
result=(T) mObjectMapper.readValue(json, t.getClass());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
public <T> ArrayList<T> fromJsonList(String json,TypeReference<ArrayList<T>> mTypeReference){
ArrayList<T> result=null;
try {
result=mObjectMapper.readValue(json, mTypeReference);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
}
もちろんGsonに対して揺るぎない人も少なくないが、汎用解析では以下の問題に直面する可能性がある.com.google.gson.internal.LinkedTreeMap cannot be cast to test.UserBean at t..以下に関連する解析方法を示します.
public <T> ArrayList<T> fromJsonList(String json, Class<T> cls) {
ArrayList<T> mList = new ArrayList<T>();
JsonArray array = new JsonParser().parse(json).getAsJsonArray();
for(final JsonElement elem : array){
mList.add(mGson.fromJson(elem, cls));
}
return mList;
}
もちろん、JackJsonのようにパラメータを伝えたいなら、コードは以下の通りです.
public <T> ArrayList<T> fromJsonList(String json,TypeToken<ArrayList<T>> mTypeToken){
ArrayList<T> list=mGson().fromJson(json, mTypeToken.getType());
return list;
}
JackJsonFactory jackson-all-1.7.6.jar , jar ,
。 Json ,TypeReference<ArrayList<T>> new, TypeReference ArrayList,
T T.class, TypeReference, 。 ,
, , , 。