我试图调试以下可以检索JSONObject的任意属性的代码。
尝试访问多个级别的JSON时失败。 例如,如果传入的JSONObject被称为" node"它有一个"子节点"它有一个属性,它失败了。
因此,在示例中,有一个访问者" node.subnode.property
"。
我认为会发生什么
record = ((JSONObject)record).get(key);
返回一个字符串 - 此时记录不是JSONObject
或JSONArray
。
因此,下一次通过for循环时,它找不到属性。
解决此问题的最佳方法是什么?该方法不应该对正在访问的JSONObject的内容有所了解。
public final Object getJSONValue(JSONObject jsonObject, String accessor)
{
String[] keys = accessor.split("\\.");
Object record = jsonObject;
for (String key : keys)
{
if ((record instanceof JSONObject))
{
record = ((JSONObject)record).get(key);
}
else if ((record instanceof JSONArray))
{
record = ((JSONArray)record).get(Integer.parseInt(key));
}
else
{
return null;
}
}
return record;
}
请注意,我使用org.json.simple.JSONObject
;