我正在使用Json Path库来解析JSON。我有以下json,它有空格键:
{
"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
库获取具有空格的键的值?
尝试对First Name
使用括号表示法,如下所示:
String firstName = JsonPath.from(json).getString("attributes.['First Name']");
<小时 />更新
很抱歉混淆了不同的JsonPath
库。
如果您使用的是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'");
你必须用单引号转义
键使用以下代码:
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 库解析