JSONObject - 检索任意属性

时间:2016-02-29 20:29:25

标签: java json jsonobject

我试图调试以下可以检索JSONObject的任意属性的代码。

尝试访问多个级别的JSON时失败。 例如,如果传入的JSONObject被称为" node"它有一个"子节点"它有一个属性,它失败了。

因此,在示例中,有一个访问者" node.subnode.property"。

我认为会发生什么

record = ((JSONObject)record).get(key);

返回一个字符串 - 此时记录不是JSONObjectJSONArray。 因此,下一次通过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;

0 个答案:

没有答案