如果提供的jsonObject中缺少任何键,是否有任何方法可以有效地检查?

时间:2017-06-01 08:11:26

标签: java json

我知道如何使用jsonStr检查提供的jsonStr.has("key")中是否存在特定密钥。要检查多个密钥存在,我必须单独检查它们。 Java中是否有任何方法,以便我可以有效地检查密钥列表(如果在提供的jsonStr中不存在任何密钥?

3 个答案:

答案 0 :(得分:1)

将需要找到的所有密钥添加到列表/集中。然后你可以使用

myKeyList.stream().allMatch(key->jsonStr.has(key))

查看JSONObject中是否存在所有键

答案 1 :(得分:1)

基本上......不。

这些JsonObject实现中的大多数都使用java.util.Map来保存JSON属性。主要是因为Map只有一个方法boolean containsKey(Object key);,大多数如果不是所有的实现都没有检查多个键的方法。

答案 2 :(得分:1)

如果查看JsonObject的实现,它会使用LinkedTreeMap来存储所有元素:

private final LinkedTreeMap<String, JsonElement> members =
  new LinkedTreeMap<String, JsonElement>();

它还有一个keySet()方法,它会返回Set<String>,但实现使用完全相同的函数(find()作为has()功能。

所以你有以下选择:

  1. JSONObject
  2. 中迭代您要检查存在的键列表
  3. 创建您自己的反序列化程序,该反序列化程序将在反序列化字符串中创建Set<String>个密钥,您可以将其与Set<String>所需密钥进行有效比较。