标签: json-query

使用 JMESPath 过滤包含字符串的元素

我想获取已定义接口类型的地址列表。我在这里
找到了一些信息。

这是我的剧本:

- name: Test JMESPath
  hosts: localhost
  gather_facts: no

  vars:
    interfaces:
    - name: em0
      address: 10.127.37.89/29
    - name: bge0
      address: 10.112.171.81/28
    - name: bge1
      address: 10.112.171.65/28
    - name: bge2
      address: 10.112.171.97/28
  tasks:
    - name: JMESPath query
      set_fact:
        result: "{{ interfaces | json_query(query) }}"
      vars:
        query: "[?name.contains(@, 'bge')].address"

    - debug:
        var: result
Run Code Online (Sandbox Code Playgroud)

我想得到:

[
  "10.112.171.81/28",
  "10.112.171.65/28",
  "10.112.171.97/28"
]
Run Code Online (Sandbox Code Playgroud)

它可以在 JMESPath 网站上运行,但我的剧本失败了:

ansible-playbook play-testJMESPath.yml [WARNING]: provided hosts list
is empty, only localhost is available. Note that the implicit
localhost …
Run Code Online (Sandbox Code Playgroud)

ansible jmespath json-query

5
推荐指数
1
解决办法
1817
查看次数

mongoexport - JSON 查询问题(扩展 JSON - JSON 输入无效)

最近开始学习MongoDB。今天老师教了我们mongoexport命令。在练习时,我遇到了一个典型的问题,包括教练在内的其他同学都没有遇到过。我在Windows 10机器上使用MongoDB 版本 4.2.0

如果我在没有任何 -q 参数的情况下为我的集合使用 mongoexport 来指定任何过滤条件,它工作正常。

mongoexport -d trainingdb -c employee -f empId,name,designation -o \mongoexport\all-employees.json

2019-09-17T18:00:30.300+0530    connected to: mongodb://localhost/
2019-09-17T18:00:30.314+0530    exported 3 records
Run Code Online (Sandbox Code Playgroud)

但是,每当我将 JSON 查询指定为 -q(或 --query)时,它都会给出如下错误。

mongoexport -d trainingdb -c employee -f empId,name,designation -q {'designation':'Developer'} -o \mongoexport\developers.json

2019-09-17T18:01:45.381+0530    connected to: mongodb://localhost/
2019-09-17T18:01:45.390+0530    Failed: error parsing query as Extended JSON: invalid JSON input
Run Code Online (Sandbox Code Playgroud)

在我为查询尝试的所有不同风格中,同样的错误仍然存​​在。

-q {'designation':'Developer'}
--query {'designation':'Developer'}
-q "{'designation':'Developer'}"
Run Code Online (Sandbox Code Playgroud)

我什至尝试在 'empId' 上使用不同的查询条件作为 -q {'empId':'1001'} 但没有运气。我不断收到同样的错误。

根据StackOverflow 网站中给出的建议之一,我尝试了以下选项,但遇到了不同的错误。 …

json mongodb mongoexport json-query

4
推荐指数
1
解决办法
8089
查看次数

获取python中的json路径列表

我正在寻找 json 文件中所有可能的 json 路径的列表 - 可以推荐任何一个吗?

例如:如果输入低于

{
   "_id":{
      "$oid":""
   },
   "aa":false,
   "bb":false,
   "source":"",
   "email":"",
   "createdAt":{
      "$date":""
   },
   "updatedAt":{
      "$date":""
   },
   "cc":"",
   "vv":"",
   "metadata":{
      "vv":"",
      "xx":[{}]
   }
}
Run Code Online (Sandbox Code Playgroud)

输出:

obj
obj._id
obj._id.$oid
obj.aa
obj.bb
obj.source
obj.email
obj.createdAt
obj.createdAt.$date
obj.updatedAt
obj.updatedAt.$date
obj.cc
obj.vv
obj.metadata
obj.metadata.vv
obj.metadata.xx
obj.metadata.xx[0]
Run Code Online (Sandbox Code Playgroud)

我基本都是在找 python 版本: https: //www.convertjson.com/json-path-list.htm

我想构建一个通用解决方案,如果有任何 json 文件 - 它将是模式生成的单个值(即换行符分隔的 json 中的一行)有什么建议吗?

python json jsonpath json-query

4
推荐指数
1
解决办法
3115
查看次数

将 json 数组读入 SQL Server 中的行

给定下面的示例 json 数据,我如何编写查询以一步提取所有数组数据?我的目标是 ActionRecs 数组 (4) 中的每个项目都有一行。我的实际 json 更复杂,但我认为这为我的目标提供了一个很好的例子。

declare @json2 nvarchar(max)
set @json2 = '{
    "RequestId": "1",
    "ActionRecs": [
        {
            "Type": "Submit",
            "Employee": "Joe"
        },
        {
            "Type": "Review",
            "Employee": "Betty"
        },
        {
            "Type": "Approve",
            "Employee": "Sam"
        },
        {
            "Type": "Approve",
            "Employee": "Bill"
        }
    ]
}'

SELECT x.*
, JSON_QUERY(@json2, '$.ActionRecs') as ActionArray
from OPENJSON(@json2) 
with (Id varchar(5) '$.RequestId') as x
Run Code Online (Sandbox Code Playgroud)

查询结果

sql-server json json-query

2
推荐指数
1
解决办法
8327
查看次数

如何在 mssql 中更新 JSON 中的嵌套数组

我正在使用 mssql 并且一列有 json 数据,我想通过传递 id 来更新该 json 的那部分(数组)。

{  
   "customerName":"mohan",
   "custId":"e35273d0-c002-11e9-8188-a1525f580dfd",
   "feeds":[  
      {  
         "feedId":"57f221d0-c310-11e9-8af7-cf1cf42fc72e",
         "feedName":"ccsdcdscsdc",
         "format":"Excel",
         "sources":[  
            {  
               "sourceId":69042417,
               "name":"TV 2 Livsstil"
            },
            {  
               "sourceId":69042419,
               "name":"Turk Max"
            }
         ]
      },
      {  
         "feedId":"59bbd360-c312-11e9-8af7-cf1cf42fc72e",
         "feedName":"dfgdfgdfgdfgsdfg",
         "format":"XmlTV",
         "sources":[  
            {  
               "sourceId":69042417,
               "name":"TV 2 Livsstil"
            },
            {  
               "sourceId":69042419,
               "name":"Turk Max"
            }
         ]
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

假设如果我要通过customerIdfeedId,它应该用我已经通过的提要更新整个提要。

我尝试使用以下查询,但没有帮助。

UPDATE
    ExtractsConfiguration.dbo.Customers 
SET
    configJSON = JSON_MODIFY(configJSON,'$.feeds[]',{"feedName":"ccsdcdscsdc"})
WHERE
    CustomerId = '9ee07040-c001-11e9-b29a-55eb3439cd7c' 
    AND json_query(configJSON,'$.feeds[].feedId'='57f221d0-c310-11e9-8af7-cf1cf42fc72e');
Run Code Online (Sandbox Code Playgroud)

sql-server json spring-data-jpa json-query

2
推荐指数
1
解决办法
3622
查看次数

模板化字符串时出现错误模板错误:没有名为“json_query”的过滤器

有了这本剧本

---
- name: ReadJsonfile
  hosts: localhost
  tasks:
    
    - name: Display the JSON file content
      shell: "cat config.json"
      register: result

    - name: save the Json data to a Variable as a Fact
      set_fact:
        jsondata: "{{ result.stdout | from_json }}"

    - name: setDomainName
      set_fact:
        domain_name: "{{ jsondata | json_query(jmesquery) }}"
      vars:
        jmesquery: '[].domain[].name'
Run Code Online (Sandbox Code Playgroud)

我的 Linux 服务器上有两个用户:user1user2

python3.8pipansible-coreansible-base&jmespath已安装。

我登录user1 ,上面的剧本运行良好

ansible-playbook test.yml

但是,当我登录并user2运行相同的命令时,我收到以下错误

任务 [setDomainName] ************************************************** ********************************************** …

installation runtime-error ansible jmespath json-query

2
推荐指数
1
解决办法
1万
查看次数

带有包含的json格式查询

我在ansible中有以下json输出:

[{
    "active_transaction": null,
    "cores": 4,
    "hostname": "alpha-auth-wb01"
},
{
    "active_transaction": null,
    "cores": 4,
    "hostname": "beta-auth-wb01"
}]
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试过滤输出以仅显示主机名包含 alpha 的输出。

输出应该是:

[{
    "active_transaction": null,
    "cores": 4,
    "hostname": "alpha-auth-wb01"
}]
Run Code Online (Sandbox Code Playgroud)

代码和结果:

Ansible 代码

jq: "[?contains(hostname, 'alpha')]"


fatal: [worker.domain]: FAILED! => {"msg": "JMESPathError in json_query filter plugin:\\nIn function contains(), invalid type for value: None, expected one of: ['array', 'string'], received: \\"null\\""}
Run Code Online (Sandbox Code Playgroud)

还尝试添加 from_json | to_json 反之亦然。还是失败了。

任何想法都非常感谢!

json ansible json-query

1
推荐指数
1
解决办法
7930
查看次数