Javaエンティティークラスをマップに変換する
注:この小さなツールクラスは、Javaオブジェクトの直接値のプロパティをマップにマップできますが、子オブジェクト構造のすべてのプロパティ(これが必要です)のマップに失敗し、親クラスから継承されたobjのプロパティのマップに失敗します。継承された属性はマップにマップする必要があり、手動で追加する必要があります。
public class MapUtils
{
public static Map<String,Object> ConvertObjToMap(Object obj){
Map<String,Object> reMap = new HashMap<String,Object>();
if (obj == null)
return null;
Field[] fields = obj.getClass().getDeclaredFields();
try {
for(int i=0;i<fields.length;i++){
try {
Field f = obj.getClass().getDeclaredField(fields[i].getName());
f.setAccessible(true);
Object o = f.get(obj);
reMap.put(fields[i].getName(), o);
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return reMap;
}
}
テスト呼び出し:objTempはJavaクラスです:
//调用实例:
Map<String, Object> mapTemp = MapUtils.object2Map(objTemp);
JavaマップをJsonObjectに変換
私はfastjsonを使用していますが、fastjsonはJSONObject.parseObject(javaObject)を直接呼び出してJavaオブジェクトをjsonに変換するため、javaObjectが子オブジェクトをネストしている場合、現時点では変換結果がわかりにくいため、最初にオブジェクトをMapに転送します。 jsonへ(少し冗長。)
JSONObject jsonObject = new JSONObject(mapTemp);
JsonからJavaエンティティオブジェクトへ
public class MyJavaClass
{
//TODO
}
//调用实例:
String jsonStr = "{}";
MyJavaClass myjavaClass = JSON.parseObject(jsonStr, MyJavaClass.class);
JSONObjectをエンティティークラスに変換します
次のように、私はfastjsonを使用してJSONObjectをJavaクラスMyJavaClassの書き込み形式に変換します。
public class MyJavaClass
{
//TODO
}
void test()
{
JSONObject jsonObj;
MyJavaClass info = JSONObject.toJavaObject(jsonObj,MyJavaClass.class);
}
JSONObjectをマップに変換します。
以下は、myJsonObjのJSONObjectをMap <String、Object>に変換するものです。
JSONObject myJsonObj = null;//TODO
Map<String, Object> itemMap = JSONObject.toJavaObject(myJsonObj, Map.class);