标签: jsonpath

有什么理由启动一个没有“$”美元符号的 JsonPath 吗?

在 JsonPath 中,我看到“$”符号被描述为“引用根对象或元素”的符号。

例子:

JsonPath.read(json, "$.store.book[*].author");
Run Code Online (Sandbox Code Playgroud)

问题:有什么理由不以“$”开头的路径吗?

在 Jayway 中,您可以省略“$”。在路径的起点处并得到相同的结果。

但是,有理由这样做吗?

java jsonpath jayway

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

将 json 补丁应用到 mongodb 文档

我想使用Python Flask框架实现HTTP PATCH。作为输入,我将收到如下 JSON 补丁:

[
  { "op": "replace", "path": "/work/title", "value": "Senior Engineer" }
]
Run Code Online (Sandbox Code Playgroud)

我的数据库是 MongoDB,我想将上述补丁直接应用到 Mongo。例如,下面是 Mongo 中存储的文档:

{  
   "name":"ABC",
   "age":25,
   "work":{  
      "title":"Engineer",
      "company":"XYZ"
   }
}
Run Code Online (Sandbox Code Playgroud)

应用补丁后,它应该是:

{  
   "name":"ABC",
   "age":25,
   "work":{  
      "title":"Senior Engineer",
      "company":"XYZ"
   }
}
Run Code Online (Sandbox Code Playgroud)

您能帮我找到一种实施方法吗?

根据我的研究,我发现了一个Python模块python-json-patch,它有助于将 json 应用到 json 对象的补丁中。因此,我们需要从 MongoDB 获取 json/document 并使用上述模块应用补丁。然后将文档替换回 MongoDB 中。所以,基本上这会以 PUT 而不是 PATCH 的形式结束。

另一种方法是我认为有一个模块来解析 json 补丁并构建 json 并使用$set将更新应用到 MongoDB将更新应用到 MongoDB 。但这种方法很幼稚而且效率不高。

因此,请建议一种使用 json patch 并直接应用于 MongoDB 文档来实现 HTTP PATCH 的好方法。

mongodb jsonpath flask python-3.x http-patch

5
推荐指数
0
解决办法
2228
查看次数

一个获取秘密名称和秘密令牌的班轮命令

替换如下 2 个命令来获取 Kubernetes 秘密令牌的一个线性命令是什么?示例用例将从 kubernetes-dashboard-admin 的密钥中获取令牌以登录和查看 kubernetes-dashboard。

命令示例:

$ kubectl describe serviceaccount default
Name:                default
Namespace:           default
Labels:              <none>
Annotations:         <none>
Image pull secrets:  <none>
Mountable secrets:   default-token-zvxf4
Tokens:              default-token-zvxf4
Events:              <none>

$ kubectl describe secret default-token-zvxf4
Name:         default-token-zvxf4
Namespace:    default
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: default
              kubernetes.io/service-account.uid: 809835e7-2564-439f-82f3-14762688ca80

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1025 bytes
namespace:  7 bytes
token:      TOKENHERE
Run Code Online (Sandbox Code Playgroud)

jsonpath kubernetes kubectl kubernetes-dashboard kubernetes-secrets

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

基于“包含”的JsonPath表达式过滤?

我有一个示例Json响应,如下所示
\n我知道如何使用==或 等比较操作来过滤它>
\ne.g。我可以使用$.books[?(@.pages > 460)]来检索超过 460 页的书籍,或者
\n类似地$.books[?(@.pages != 352)]检索不超过 352 页的书籍。
\n但是我如何过滤它Json来检索标题包含“Java”子字符串或在 2014 年出版的书籍(实际上也是子字符串)?
\n样本Json为:

\n
{  \n  "books": [  \n    {  \n      "isbn": "9781593275846",  \n      "title": "Eloquent JavaScript, Second Edition",  \n      "subtitle": "A Modern Introduction to Programming",  \n      "author": "Marijn Haverbeke",  \n      "published": "2014-12-14T00:00:00.000Z",  \n      "publisher": "No Starch Press",  \n      "pages": 472,  \n      "description": "JavaScript lies at the heart of almost every modern web …
Run Code Online (Sandbox Code Playgroud)

jsonpath

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

修复 Argo CD 中的不同步警告 - 无法忽略可选的“preserveUnknownFields”字段

Argo CD 显示 linkerd(由 Helm 安装)中的两个项目不同步。preserveUnknownFields: false这些警告是由该部分中的可选选项引起的spec

Trafficsplits.split.smi-spec.io 在此输入图像描述

在此输入图像描述

serviceprofiles.linkerd.io

在此输入图像描述

在此输入图像描述

但我无法弄清楚如何忽略清单ignoreDifferences中使用的差异Application。json路径/spec/preserveUnknownFields不起作用。是因为左侧版本中不存在字段preserveUnknownFields吗?


apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: linkerd
  namespace: argocd
spec:
  destination:
    namespace: linkerd
    server: https://kubernetes.default.svc
  project: default
  source:
    chart: linkerd2
    repoURL: https://helm.linkerd.io/stable
    targetRevision: 2.10.1
 syncPolicy:
    automated: {}
  ignoreDifferences:
     - group: apiextensions.k8s.io/v1
       name: trafficsplits.split.smi-spec.io
       kind: CustomResourceDefinition
       jsonPointers:
         - /spec/preserveUnknownFields
     - group: apiextensions.k8s.io/v1
       name: trafficsplits.split.smi-spec.io
       kind: CustomResourceDefinition
       jsonPointers:
         - /spec/preserveUnknownFields
Run Code Online (Sandbox Code Playgroud)

jsonpath kubernetes jsonpointer linkerd argocd

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

PostgreSQL jsonb_path_query 删除结果而不是返回空值

在示例表中:

CREATE TABLE example (
    id   SERIAL PRIMARY KEY,
    data JSON NOT NULL );
INSERT INTO example (id, data) VALUES
  (1, '[{"key": "1", "value": "val1"}, {"key": "2", "value": "val2"}]')
, (2, '[{"key": "1", "value": "val1"}]')
, (3, '[{"key": "1", "value": "val1"}, {"key": "2", "value": "val2"}]');
Run Code Online (Sandbox Code Playgroud)

我想查询数据列中 key = 2 的值字段。我当前使用的查询是这样的:

SELECT id,
       jsonb_path_query(
               TO_JSONB(data),
               '$[*] ? (@.key == "2").value'::JSONPATH
           )::VARCHAR AS values
FROM example
Run Code Online (Sandbox Code Playgroud)

我期望结果是:

ID 价值观
1 “值2”
2 无效的
3 “值2”

但实际结果是:

ID 价值观
1 “值2”
3 “值2” …

sql postgresql jsonpath set-returning-functions jsonb

5
推荐指数
2
解决办法
1283
查看次数

在 Presto/Trino 中获取 JSON 对象键作为数组

我的一列中有这样的 JSON 数据

{"foo": 1, "bar": 2}
{"foo": 1}
Run Code Online (Sandbox Code Playgroud)

我想运行一个查询,将键作为数组返回

foo,bar
foo
Run Code Online (Sandbox Code Playgroud)

sql jsonpath presto trino

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

如何将JSONPath获取到JSON对象数组中的所有子节点?

您如何获得对象的所有子节点的JSONPath?

例如:

var data = [{
    "key1": {
        "children": [{
            "key2": "value",
            "key3": "value",
            "key4": {}
        }, {
            "key2": "value",
            "key3": "value",
            "key4": {}
        }],
        "key5": "value"
    }
}, {
    "key1": {
        "children": {
            "key2": "value",
            "key3": "value",
            "key4": {}
        },
        "key5": "value"
    }
}]
Run Code Online (Sandbox Code Playgroud)

我希望将数据结构中所有节点的绝对路径作为数组:

[
    "data[0]['key1']['children'][0]['key2']", 
    "data[0]['key1']['children'][0]['key3']", 
    "data[0]['key1']['children'][0]['key4']", 
    ......, 
    "data[0]['key1']['children'][1]['key2']",
    ......., 
    "data[1]['key1']['children']['key2']",
    ..........
]
Run Code Online (Sandbox Code Playgroud)

有没有办法在JS中完成这项工作?

javascript jquery jsonpath

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

将Jsonpath输出映射到POJO列表

我正在尝试将Jsonpath的输出直接映射到POJO列表.我正在使用杰克逊作为地图提供商.

Jsonpath输出:

{
  "actions" : [
    {
      "parameterDefinitions" : [
        {
          "defaultParameterValue" : {
            "name" : "PARAM1",
            "value" : ""
          },
          "description" : "Type String",
          "name" : "PARAM1",
          "type" : "StringParameterDefinition"
        },
        {
          "defaultParameterValue" : {
            "name" : "PARAM3",
            "value" : ""
          },
          "description" : "Type String",
          "name" : "PARAM3",
          "type" : "StringParameterDefinition"
        }
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

JobParameter.java(我要映射的POJO):

public class JobParameter {

   private String description;
   private String name;
   private String type;

   // public getters & setters
Run Code Online (Sandbox Code Playgroud)

Jsonpath初始化 …

java jsonpath jackson

4
推荐指数
2
解决办法
4674
查看次数

如何使用jsonpath从kubectl中提取多个值

我找到了用于测试多个值但不提取多个值的jsonpath示例.

我想imagenamekubectl get pods.

这让我受益匪浅 name kubectl get pods -o=jsonpath='{.items[*].spec.containers[*].name}' | xargs -n 1

这让我受益匪浅 image kubectl get pods -o=jsonpath='{.items[*].spec.containers[*].image}' | xargs -n 1

kubectl get pods -o=jsonpath='{.items[*].spec.containers[*].[name,image}' | xargs -n 2

抱怨invalid array index image- 是否有获取节点相邻值列表的语法?

jsonpath kubernetes kubectl

4
推荐指数
2
解决办法
2334
查看次数