标签: jsonpath

处理rails 3控制器中的jsonp

我希望我的控制器操作能够处理来自jquery的jsonp请求$.getJSON.在我的控制器操作中,我有以下respond_to块:

respond_to do |format|
  format.html { render json: {:items_by_tag => @tagged_item_list}}
  if params[:callback]
        format.js { render :json => {:items_by_tag => @tagged_item_list}.to_json, :callback => params[:callback] }
  else
        format.json { render json: {:items_by_tag => @tagged_item_list}}
  end
end
Run Code Online (Sandbox Code Playgroud)

但是SyntaxError:invalid label当我打电话给网址时,我正在收到$.getJSON.我的网址是形式的http://myservice.com?param1=a&param2=b&callback=?.
我的代码导致jsonp失败的问题是什么?

javascript jquery cross-domain jsonpath ruby-on-rails-3

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

JsonPath:如果满足条件,则选择根级别字段

鉴于以下Json输入:

{ 
  "category": "fiction",
  "author": "Evelyn Waugh",
  "title": "Sword of Honour",
  "price": 12.99
}
Run Code Online (Sandbox Code Playgroud)

如果作者匹配例如给定名称,我需要选择作者字段.Evelyn Waugh.我正在努力为此编写JsonPath表达式.我尝试了以下但没有成功.谁能建议正确的表达方式?

$.author?(@ == 'Evelyn Waugh')
$.?(@.author == 'Evelyn Waugh')
$..?(@.author == 'Evelyn Waugh')
Run Code Online (Sandbox Code Playgroud)

json filter input-filtering jsonpath

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

JsonPath - 读取Java Long类型

我有JSON数据,看起来像这样

{ "会话ID":7242750700467747000}

该号码先前从服务器响应中获取,并在服务器端生成为Java Long.客户端认为自己认为这是sessionID并发送请求.问题是,当客户端的请求到达我不得不再次解析这个值long类型的服务器.我使用JsonPath,具体来说:

<dependency>
    <groupId>com.jayway.jsonpath</groupId>
    <artifactId>json-path-assert</artifactId>
    <version>0.8.1</version>
    <scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

当我像这样解析JSON数据时

long sessionID = JsonPath.read(json,"$ .sessionID");

我得到一个例外:

java.lang.ClassCastException:java.lang.Integer无法强制转换为java.lang.Long

因此看起来这个数字是由JsonPath解析为Integer的.这肯定会导致错误的结果,因为Integer小于Long.在JsonPath中有什么办法可以解析并将数据作为Long返回吗?

java json types jsonpath

6
推荐指数
2
解决办法
6527
查看次数

Jsonpath为数组的长度

鉴于json等

{"arr1" : [1,2,3], "arr2" : []}
Run Code Online (Sandbox Code Playgroud)

在哪里知道有名为arr1和arr2的数组,是否有一个jsonpath表达式用于数组的长度,它将适用于空数组和非空数组?

我使用谷歌代码的JsonPath库做了几次尝试,注意:

JsonPath.read(json, "arr1.length")
Run Code Online (Sandbox Code Playgroud)

但它给出了一个错误,说数组没有属性.

我正在寻找解析为数组长度的单个字符串路径,而不是后续调用中间体,例如

JsonPath.read(json, "arr1").length // useless to me
Run Code Online (Sandbox Code Playgroud)

表达的任何复杂程度都是可以接受的.

对于上下文,我想提供一个带路径/值对的测试套件,这对于值很有用,但是我不能用这个模式断言数组大小.

arrays size groovy jsonpath spock

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

使用Hamcrest Matchers检查JsonPath的输出

我写了Spring控制器Junits。我使用JsonPath使用来从JSON获取所有ID ["$..id"]

我有以下作为测试方法:

mockMvc.perform(get(baseURL + "/{Id}/info", ID).session(session))
    .andExpect(status().isOk()) // Success
    .andExpect(jsonPath("$..id").isArray()) // Success
    .andExpect(jsonPath("$..id", Matchers.arrayContainingInAnyOrder(ar))) // Failed
    .andExpect(jsonPath("$", Matchers.hasSize(ar.size()))); // Success
Run Code Online (Sandbox Code Playgroud)

以下是我传递的数据:-

List<String> ar = new ArrayList<String>();
ar.add("ID1");
ar.add("ID2");
ar.add("ID3");
ar.add("ID4");
ar.add("ID5");
Run Code Online (Sandbox Code Playgroud)

我收到以下失败消息:

Expected: [<[ID1,ID2,ID3,ID4,ID5]>] in any order
     but: was a net.minidev.json.JSONArray (<["ID1","ID2","ID3","ID4","ID5"]>)
Run Code Online (Sandbox Code Playgroud)

问题是:如何使用JSONArray进行处理?org.hamcrest.Matchers;有没有使用JSONPath的简单方法。

设置: - ,,hamcrest-all-1.3 jarjson-path-0.9.0.jarspring-test-4.0.9.jar

java junit hamcrest spring-test jsonpath

6
推荐指数
2
解决办法
5176
查看次数

JSON PATH字段NULL检查表达式

我有一个像bellow的json数组:

{
"store": {
    "book": [
        {
            "category": "reference",
            "author": "Nigel Rees",
            "title": "Sayings of the Century",
            "price": 8.95
        },
        {
            "category": "fiction",
            "author": "Evelyn Waugh",
            "title": "Sword of Honour",
            "price": 12.99,
            "likes": 1
        },
        {
            "category": "fiction",
            "author": "Herman Melville",
            "title": "Moby Dick",
            "isbn": "0-553-21311-3",
            "price": 8.99
        },
        {
            "category": "fiction",
            "author": "J. R. R. Tolkien",
            "title": "The Lord of the Rings",
            "isbn": "0-395-19395-8",
            "price": 22.99
        }
    ],
    "bicycle": {
        "color": "red",
        "price": 19.95
    }
},
"expensive": 10}
Run Code Online (Sandbox Code Playgroud)

我试图找到没有 …

java json jsonpath

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

JSON路径字符串根值的评估

有一个返回一个非常基本的json响应的服务:

{
    "methodresult": "error",
    "ErrorCode": 2,
    "ErrorCodeText": "format",
    "ErrorMessage": "Json parse exception at pos:171 msg:Expecting \"key\""
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用JSONPath来查询"methodresult"值是否返回"错误".

基于我见过的文档/示例,我希望这可以工作:

$[?(@.methodresult=="error")]
Run Code Online (Sandbox Code Playgroud)

但是基于我正在使用的验证器(https://jsonpath.curiousconcept.com/)我没有看到任何布尔响应.

当试图用一个不在数组中的东西写一个表达式时,我有什么东西不见了?

jsonpath json-path-expression

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

如何将特定字段从 EventBridge 输入发送到其目标

我在 AWS EventBridge 上收到一个 Webhook 事件。事件 json 正文非常大,我只需将 4 个字段传输到目标。这些字段是:

{"browser_ip":"$.detail.payload.browser_ip","created_at":"$.detail.payload.created_at","email":"$.detail.payload.email","shopify_order_id":"$.详细信息.payload.id"}

我尝试过“配置输入”-->“匹配的 eventInfo 的一部分”选项,但仅当我仅添加 1 个参数(例如“$.detail.payload”)时它才有效。当我添加多个参数时,它说输入路径无效。我找不到任何有关如何添加匹配事件信息的多个部分的示例。是否可以 ?如果是的话我做错了什么?

在此输入图像描述 在此输入图像描述 问候,莉娜

jsonpath amazon-web-services aws-event-bridge

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

使用 EventBridge 输入转换器时如何从状态机输出中提取属性

我在使用 EventBridge 服务将 AWS 状态机返回的值之一作为输入传递到 Lambda 时遇到问题。

我在 AWS Step Functions 中创建了一个状态机来对我们域中的特定问题进行建模。状态机完成后,我想从其中一个 Lambda 内部执行另一项操作。为了实现这一点,我使用 EventBridge 创建了一条新规则:每当状态机完成时,它都会使用特定的 Json 输入触发我的 lambda。

我的问题是如何从状态机输出中提取属性并将它们作为 lambda 输入的属性传递。

假设我的状态机返回以下内容:

{
    "usefulObject":{
        "usefulProperty":"value"
    },
    "anotherProperty":"anotherValue"
}
Run Code Online (Sandbox Code Playgroud)

我想在我的 lambda 中接收以下有效负载:

{
    "property":"value"
}
Run Code Online (Sandbox Code Playgroud)

最初,我认为我可以使用 EventBridge 规则上的“输入转换”选项来完成此操作,例如:

  • 输入转换器路径:
{"propertyValue":"$.usefulObject.usefulProperty"}
Run Code Online (Sandbox Code Playgroud)
  • 输入转换器模板:
{"property":<propertyValue>}
Run Code Online (Sandbox Code Playgroud)

然而,在测试过程中,我意识到事件有效负载包含的数据比状态机输出多得多。实际上,状态机输出被包装在这个“事件容器”对象中,如下所示:

{
    "version": "0",
    "id": "...",
    "detail-type": "Step Functions Execution Status Change",
    "source": "aws.states",
    "account": "...",
    "time": "2020-11-10T13:59:57Z",
    "region": "us-east-1",
    "resources": [
        "...myStateMachineArn..."
    ],
    "detail": {
        "executionArn": "...myStateMachineExecutionArn...",
        "stateMachineArn": "...myStateMachineArn...",
        "name": "ff72036a-2917-c657-80e7-2589b7b76d59",
        "status": "SUCCEEDED",
        "startDate": 1605016794597,
        "stopDate": 1605016797936, …
Run Code Online (Sandbox Code Playgroud)

json jsonpath aws-lambda aws-step-functions aws-event-bridge

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

Kubernetes 列出所有未运行的容器

如何使用Kubectl命令列出所有未运行的容器。我想要像这样的输出

CONTAINER_NAME   STATUS        POD_NAME       NAMESPACE <br>
container_1      Running       pod_1          ns1       <br>
container_2      Not Running   pod_2          ns2       <br>
container_3      Running       pod_2          ns2       <br>
Run Code Online (Sandbox Code Playgroud)

customcolumn jsonpath kubernetes kubectl

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