Gson解析テクニック
2233 ワード
リストを解析する際の公式の使用:
TypeToken匿名の内部クラスを使用する方法.匿名の内部クラス定義の汎用型を取得する.
ツールクラスをカプセル化する場合、リストを解析する際にTypeToken匿名の内部クラスを渡すことは避けられない.
TypeFactoryはツールクラスの簡単なパッケージです.
次の操作を行います.
静的インポート方法を再使用するには、次の手順に従います.
いくつかの複雑な汎用型
List dims=gson.fromJson(json,new TypeToken>(){}.getType());
TypeToken匿名の内部クラスを使用する方法.匿名の内部クラス定義の汎用型を取得する.
ツールクラスをカプセル化する場合、リストを解析する際にTypeToken匿名の内部クラスを渡すことは避けられない.
Dim
だけを長く書かずに伝える方法はありますか?方法は実は簡単で、Gsonのために正しいTypeを構築してあげます.TypeFactoryはツールクラスの簡単なパッケージです.
/**
* Created by dim on 16/5/27.
*/
public class TypeFactory {
public static Type $List(Type type) {
return $Gson$Types.newParameterizedTypeWithOwner(null, List.class, type);
}
public static Type $Set(Type type) {
return $Gson$Types.newParameterizedTypeWithOwner(null, Set.class, type);
}
public static Type $HashMap(Type type, Type type2) {
return $Gson$Types.newParameterizedTypeWithOwner(null, HashMap.class, type, type2);
}
public static Type $Map(Type type, Type type2) {
return $Gson$Types.newParameterizedTypeWithOwner(null, Map.class, type, type2);
}
public static Type $Parameterized(Type ownerType, Type rawType, Type... typeArguments) {
return $Gson$Types.newParameterizedTypeWithOwner(ownerType, rawType, typeArguments);
}
public static Type $Array(Type type) {
return $Gson$Types.arrayOf(type);
}
public static Type $SubtypeOf(Type type) {
return $Gson$Types.subtypeOf(type);
}
public static Type $SupertypeOf(Type type) {
return $Gson$Types.supertypeOf(type);
}
}
次の操作を行います.
List dims = gson.fromJson(json, TypeFactory.$List(Dim.class));
静的インポート方法を再使用するには、次の手順に従います.
import static com.dim.TypeFactory.*;
...
List dims = gson.fromJson(json, $List(Dim.class));
...
いくつかの複雑な汎用型
List dims = gson.fromJson(json, $List(Dim.class));
List> dimss= gson.fromJson(json,$List($List(Dim.class)));
Dim[] dimArray=gson.fromJson(json,$Array(Dim.class));
Set dimSet=gson.fromJson(json,$Set(Dim.class));
Map dimMap=gson.fromJson(json,$Map(String.class,Dim.class));
Map> dimsMap=gson.fromJson(json,$Map(String.class,$List(Dim.class)));