我从 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 中减少这种情况?