获取获取特定值的JSON对象编号

时间:2016-11-17 06:28:56

标签: java json rest-assured

我有一个JSON数据,我需要从中解析路径并从该JSON数据中获取值。 我的JSON数据格式如下:

"PAYLOAD": [
        {
            "ModuleID": "40",
            "ModuleName": "Job Posting"

        },
        {
            "ModuleID": "40",
            "ModuleName": "Job Posting"

        },
        {
            "ModuleID": "180",
            "ModuleName": "Invoice"
        },.................

现在我正在检查键值,如:

boolean hello=jp.getString("PAYLOAD.ModuleName").contains("Job Posting");

让我知道JSON数据中是否存在值“Job Posting”,而不是具有此值的JSON对象编号。 我不想使用for循环来获取对象编号。 是否有任何简短的方法来获取具有与特定路径对应的特定值的对象编号?

2 个答案:

答案 0 :(得分:0)

以下表达式

PAYLOAD[?(@.ModuleName='Job Posting')].ModuleID

返回

["40","40"]

你可以尝试一下。

答案 1 :(得分:0)

我在这里粘贴我的代码段。确保路径中包含JSONPath jar文件。这是打印所需的输出["40","40"]

String JSONString = "{\"PAYLOAD\": [{\"ModuleID\": \"40\",\"ModuleName\": \"Job Posting\"}, {\"ModuleID\": \"40\",\"ModuleName\": \"Job Posting\"}, {\"ModuleID\": \"180\",\"ModuleName\": \"Invoice\"}]}";
    net.minidev.json.JSONArray jsonArray = com.jayway.jsonpath.JsonPath
            .parse(JSONString).read(
                    "PAYLOAD[?(@.ModuleName=='Job Posting')].ModuleID");
    System.out.println("Result: " + jsonArray.toString());