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

问题描述 投票:1回答:3

我正在使用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库获取具有空格的键的值?

java rest-assured jsonpath rest-assured-jsonpath
3个回答
0
投票

您必须用单引号将键转义

使用下面的代码:

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

0
投票

尝试对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'");

-1
投票

“。”在不同的上下文中具有特殊的含义。在字符串中使用它时,应该对其进行转义。https://support.google.com/analytics/answer/1034332?hl=en

© www.soinside.com 2019 - 2024. All rights reserved.