Java 无法使用JsonPath库获取带空格的键的值
我正在使用库解析JSON。我使用了以下json,其中包含带空格的键: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
{
"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'");