无法使用 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 库解析
我正在使用 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 库解析