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

Java 无法使用JsonPath库获取带空格的键的值,java,rest-assured,jsonpath,rest-assured-jsonpath,Java,Rest Assured,Jsonpath,Rest Assured Jsonpath,我正在使用库解析JSON。我使用了以下json,其中包含带空格的键: { "attributes": { "First Name": "Jim", "Last Name": "Rohn" } } 为了获得First Name的值,我编写了如下代码(其中json是保存在json之上的对象)- 但它会导致以下错误- java.lang.IllegalArgumentException: Invalid JSON expression: Script1

我正在使用库解析JSON。我使用了以下json,其中包含带空格的键:

{
    "attributes": {
        "First Name": "Jim",
        "Last Name": "Rohn"
    }
}
为了获得
First Name
的值,我编写了如下代码(其中
json
是保存在json之上的对象)-

但它会导致以下错误-

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

您能否建议如何使用
json path
library获取具有空格的键的值?

您必须使用单引号转义键

使用以下代码:

String firstName = JsonPath.from(json).getString("'attributes.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路径
,请使用此路径:

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

这不会给出任何错误,但会返回
null
作为一个值,即使存在非null值。我使用了
io.rest-assured.rest-assured.4.1.2
,它在内部使用
io.rest-assured.json-path.4.1.2
@TDHM。那么这篇文章中的解决方案也没有帮助吗?非常感谢它的帮助!它应该像
属性。'First Name'
@TDHM太棒了!我已经更新了我的帖子,请查看!
String firstName = JsonPath.from(json).getString("attributes.'First Name'");