首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON路径->解析->无法访问其中包含逗号、连字符的键的值

JSON路径->解析->无法访问其中包含逗号、连字符的键的值
EN

Stack Overflow用户
提问于 2022-03-31 09:12:32
回答 1查看 129关注 0票数 -2

我有一个JSON响应,其中一个键值包含"-“、”“以及其中的空间。我能够正确地解析它,但现在它似乎无法工作。

对于复制,我们可以使用http://jsonpath.com/

JSON:

代码语言:javascript
复制
{
  "data":{
        "ID":"123",
        "paraValues":{
            "DE:is this A": "Yes",
             "DE:is this B": "No",
             "DE:Is project part of a multi-piece initiative - campaign, event?" : "No"
        }
    }
}

我正在尝试获取这个键的值:"DE:Is project part of a multi-piece initiative - campaign, event"

我正在使用:

代码语言:javascript
复制
$.data.paraValues.DE:Is project part of a multi-piece initiative - campaign, event?

它没有起作用。

然后我读了一些答案后说:

代码语言:javascript
复制
$.data.paraValues.["DE:Is project part of a multi-piece initiative - campaign, event?"]

这也没用。

Update:来自java的用户可以通过升级jsonpath库来解决问题。

我添加了下面的库,它解决了这个问题:

代码语言:javascript
复制
<!-- https://mvnrepository.com/artifact/com.jayway.jsonpath/json-path -->
<dependency>
    <groupId>com.jayway.jsonpath</groupId>
    <artifactId>json-path</artifactId>
    <version>2.7.0</version>
</dependency>

注意:在http://jsonpath.com/中,访问它仍然失败。

EN

回答 1

Stack Overflow用户

发布于 2022-03-31 09:57:48

这似乎是jsonpath-plus中的一个bug,由jsonpath.com使用。

如果我切换到jsonpath模块,那么它就能工作(如果您删除了额外的.)。

代码语言:javascript
复制
const data = JSON.parse(`{
  "data":{
        "ID":"123",
        "paraValues":{
            "DE:is this A": "Yes",
             "DE:is this B": "No",
             "DE:Is project part of a multi-piece initiative - campaign, event?" : "No"
        }
    }
}`);
const result = jsonpath.query(
  data,
  '$.data.paraValues["DE:Is project part of a multi-piece initiative - campaign, event?"]'
);
console.log(result);
代码语言:javascript
复制
<script src="https://unpkg.com/jsonpath@1.1.1/jsonpath.js"></script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71689867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档