JavaScript/RubyからJavaに来ています。動物用に次のJSONオブジェクトがあるとします。
{
name: {
common: "Tiger",
latin: "Panthera tigris"
}
legs: 4
}
私はたくさんの動物APIを扱っていますが、それらすべてを次のような独自の共通形式に正規化したいと思います。
{
common_name: "Tiger",
latin_name: "Panthera tigris",
limbs: {
legs: 4,
arms: 0
}
}
たとえば、JavaScriptの場合、これは簡単です。
normalizeAnimal = function(original){
return {
common_name: original.name.common,
latin_name: original.name.latin,
limbs: {
legs: original.legs || 0,
arms: original.arms || 0
}
}
}
しかし、Javaではどうでしょうか。org.jsonのJSONObjectクラスを使用して、次のようなことを行うことができます。
public JSONObject normalizeAnimal(JSONObject original) throws JSONException{
JSONObject name = original.getJSONObject("name");
JSONObject limbs = new JSONObject();
JSONObject normalized = new JSONObject();
normalized.put("name_name", name.get("common"));
normalized.put("latin_name", name.get("latin"));
try{
limbs.put("legs", original.get("legs");
}catch(e){
limbs.put("legs", 0);
};
try{
limbs.put("arms", original.get("arms");
}catch(e){
limbs.put("arms", 0);
};
normalized.put("limbs", limbs);
return normalized;
}
私が扱っているJSONオブジェクトが長くなり、深くなるにつれて、これはさらに悪化します。これらすべてに加えて、私は動物オブジェクトの多くのプロバイダーと取引しており、最終的には、変換を記述するための簡潔な構成形式(多分など"common_name": "name.common", "limbs.legs": "legs"
)を探しています。
Javaでこれを減らすにはどうすればよいですか?