如何检查 JSON 数组中是否存在特定键的值?

Aut*_*999 2 java arrays json gson json-simple

我的 JSON 数组文件:

[
    {
      "setName": "set-1",
      "testTagName": "Test1",
      "methodName": "addCustomer"
    },
    {
        "setName": "set-1",
        "testTagName": "Test2",
        "methodName": "addAccount"
    },
    {
        "setName": "set-2",
        "testTagName": "Test3",
        "methodName": "addRole"
    }
  ]
Run Code Online (Sandbox Code Playgroud)

我使用Java。我在 Gson 对象中有上面的 JSON 数组。如何迭代此 Gson 数组以检查JSON 数组的任何对象中的键“methodName”的数组中是否存在特定方法名称(例如:addRole)?我期待结果是真/假。

我检查了 GSON 文档 - ( https://github.com/google/gson/blob/master/gson/src/main/java/com/google/gson/JsonObject.java#L141 )

has方法似乎检查密钥。我正在寻找一种可以迭代数组对象并检查特定键是否存在特定值的方法。

我怎样才能实现这个目标?

Cri*_*exe 5

首先,您需要通过以下方式将 JSON 代码反序列化为 JsonArray:

JsonArray jsonArr = gson.fromJson(jsonString, JsonArray.class);
Run Code Online (Sandbox Code Playgroud)

之后你可以创建这个方法:

public boolean hasValue(JsonArray json, String key, String value) {
    for(int i = 0; i < json.size(); i++) {  // iterate through the JsonArray
        // first I get the 'i' JsonElement as a JsonObject, then I get the key as a string and I compare it with the value
        if(json.get(i).getAsJsonObject().get(key).getAsString().equals(value)) return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

现在您可以调用该方法:

hasValue(jsonArr, "methodName", "addRole");
Run Code Online (Sandbox Code Playgroud)