无法使用 JsonPath 库获取带空格的键的值

Unable to get value of key with spaces using JsonPath library

我正在使用 Json Path 库来解析 JSON。我正在关注 json,其中包含 space:

的密钥
{
    "attributes": {
        "First Name": "Jim",
        "Last Name": "Rohn"
    }
}

为了获得 First Name 的值,我编写了如下代码(其中 json 是 json 上方的对象)-

String firstName = JsonPath.from(json).getString("attributes.First Name");

但它导致以下错误 -

java.lang.IllegalArgumentException: Invalid JSON expression:
Script1.groovy: 1: expecting EOF, found 'Attributes' @ line 1, column 67.
   .First Name

您能否建议如何使用 json-path 库获取具有 space 的键的值?

你必须用单引号转义键

使用以下代码:

String firstName = JsonPath.from(json).getString("'attributes.First Name'");

尝试对 First Name 使用括号表示法,如下所示:

String firstName = JsonPath.from(json).getString("attributes.['First Name']");

更新

很抱歉混合了不同的 JsoPath 库。

如果您使用的是com.jayway.jsonpath,请尝试以下方式进行转义:

DocumentContext jsonContext = JsonPath.parse(json);
String firstName = jsonContext.read("$.attributes.['First Name']");

但是如果你用的是***.restassured.json-path,请用这个:

String firstName = JsonPath.from(json).getString("attributes.'First Name'");

如果您正在使用 io.restassured.path.json.JsonPath 库,则路径表达式中需要转义序列。

String firstName = JsonPath.from(json).getString("attributes.\"First Name\"");

\" <-- Insert a double quote character in the text at this point.

所以你的路径表达式看起来像 (attributes."First Name") 并且可以被 JsonPath 库解析