使用Java如何按键除以点得到嵌套值?

时间:2019-01-21 10:25:12

标签: java json nested

所以,假设我有下一个JSON对象:

{
   "key1": {
      "key11": "value11",
      "key12": {
         "key121": "value121",
         "key122": "value122",
         "key123": "value123"
      }
   },
   "key2": "value2",
   "key3": "value3"
}

我将嵌套键除以点:key1.key12.key122。目标是通过此键获得value122

我写了下一个解决方案:

public List<String> getEntityValuesByKeys(JSONObject entity, List<String> keys) {
    List<String> values = new ArrayList<>();

    JSONObject entityCopy = new JSONObject(entity.toString());

    for (String key : keys) {
        String[] nestedKeys = key.split("\\.");
        for (String nestedKey : nestedKeys) {
            if (entityCopy.get(nestedKey) instanceof JSONObject) {
                entityCopy = new JSONObject(entityCopy.get(nestedKey).toString());
            } else {
                values.add(entityCopy.get(nestedKey).toString());
            }
        }
        entityCopy = new JSONObject(entity.toString());
    }

    return values.stream().sorted().collect(Collectors.toList());
}

是否有一些类似这样的Java库?

我事先不知道JSON的深度和嵌套的关键。它只能有一个嵌套步骤,例如:key1,并且例如在一个方法调用中更高级别。

所有输入参数和返回值必须相同。

谢谢!

0 个答案:

没有答案