我正在使用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
库获取具有空格的键的值?
您必须用单引号将键转义
使用下面的代码:
String firstName = JsonPath.from(json).getString("'attributes.First Name'");
尝试对First Name
使用括号表示法,如下所示:
String firstName = JsonPath.from(json).getString("attributes.['First Name']");
UPDATE
[我很抱歉将不同的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'");
“。”在不同的上下文中具有特殊的含义。在字符串中使用它时,应该对其进行转义。https://support.google.com/analytics/answer/1034332?hl=en