【问题标题】:Get json key name from json.javax.JsonObject?从 json.javax.JsonObject 获取 json 键名?
【发布时间】:2014-08-01 14:54:08
【问题描述】:

假设我有一个来自javax 的名为 jsonObject 的 JsonObject,如下所示:{"key":"value"}

如何获取密钥名称key

我只找到像getJsonString 这样的方法来获取键值value,而不是键本身的名称。

背景:

我有一个 Json 数组,其中包含键值对。我想知道特定索引上的键名i

例子:

[{"key1":"value0"},{"key1":"value1"},{"key2","value2"}]

key1 这里是成功,key2 是失败,必须检查。

【问题讨论】:

  • 有人会猜你得到entrySetkeySet 并遍历它。在上面的示例中,数组中的三个对象中的每一个都只有一个键,因此“迭代”并不是什么大负担。
  • (注意JsonObject实现了Map接口,Map有各种有用的功能。)
  • (请注意,在提出此类问题之前,您应该访问该类的文档,不仅要检查该类直接实现的方法,还要检查任何“继承”的方法。)

标签: java json


【解决方案1】:

JsonObject 实现Map<String, JsonValue>。您可以调用jsonObject.keySet() 来访问键,或调用jsonObject.entrySet() 来获取对象的完整视图,包括键和值。

for (String key: jsonObject.keySet()) {
    System.out.println(key);
}

在您描述的问题的上下文中,听起来您想要验证每个数组元素是否包含一个具有恰好一个键值对的对象。也许是这样的:

Set<Map.Entry<String, JsonValue>> kvPairs = jsonObject.entrySet();
if (kvPairs.size() == 1) {
    for (Map.Entry<String, JsonValue> kvPair: kvPairs) {
        if (kvPair.getKey().equals("key1")) {
            // success
        } else {
            // error handling
        }
    }
} else {
    // error handling
}

【讨论】:

    猜你喜欢
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 2018-11-06
    • 2014-05-31
    • 1970-01-01
    相关资源
    最近更新 更多