對不起,我試過了,但根本無法讓我的JMESPath過濾作業對私人倉庫的Github GraphQL進行過濾。
這是我想過濾的Github GraphQL結果:
這是我想過濾的Github GraphQL結果。
{}。
"data": {
"repositoryOwner": {
"repositories": {
"邊緣": [/span>
{>
"節點": {
"name": "foo",
"isFork": false,
"isPrivate": true,
"createdAt": "2019-04-25T20:31:07Z",
"upedAt": "2019-04-30T03:44:30Z",
"primaryLanguage": {}。
"primaryLanguage": "JavaScript"
}
}
},
{>
"node": {
"name": "bar",
"isFork": false,
"isPrivate": true,
"createdAt": "2019-04-25T01:26:31Z",
"upedAt": "2019-04-28T23:16:03Z",
"primaryLanguage": {}。
"primaryLanguage": "JavaScript"
}
}
},
{>
"node": {
"name": "fur",
"isFork": false,
"isPrivate": false,
"createdAt": "2019-04-25T02:46:28Z",
"upedAt": "2019-06-12T15:46:30Z",
"primaryLanguage": {}。
"primaryLanguage": "JavaScript"
}
}
},
{>
"node": {
"name": "blog",
"isFork": false,
"isPrivate": false,
"createdAt": "2013-03-17T13:37:44Z",
"upedAt": "2019-06-08T02:58:44Z",
"primaryLanguage": null
}
},
{>
"node": {
"name": "blogs",
"isFork": false,
"isPrivate": true,
"createdAt": "2015-12-06T03:52:14Z",
"upedAt": "2016-02-27T05:17:52Z",
"primaryLanguage": {}。
"primaryLanguage": "CSS"
}
}
}
]
}
}
}
}
我試過
data.repositoryOwner.repositories.edges.node[?isPrivate==`true`]
data.repositoryOwner.repositories.edges[].node[?isPrivate==`true`]
data.repositoryOwner.repositories.edges[].[node[?isPrivate==`true`]]
但是他們都沒有給我我想要的串列,因為https://jmespath.org/tutorial.html中的每一個例子都是關于陣列元素的過濾,而我上面的不是。
類似的情況,對于
來說curl -s https://api.github.com/repos/golang/go/events | jp "[?type=='IssuesEvent'].payload.{Title: issue.title, URL: issue.url, User: issue.user.login, Event: action}"
如何在payload.action=='created'上進一步過濾(就地取材,不使用管道)?
UPDATE2:
<答案是,
[?type=='IssueCommentEvent' && payload.action=='created'].payload.{Title: issue.標題, URL: issue.url, User: issue.user.login, Event: action}
然后我們會得到:
[/span>
{>
"Title": "x/website: post https://go.dev/blog/tidy-web contains a broken link",
"URL": "https://api.github.com/repos/golang/go/issues/47975",
"用戶": "ilikegolang",
"Event": "created"
},
{>
"Title": "cmd/compile: 指向具體型別的指標不滿足泛型方法集", "cmd/compile: 指向具體型別的指標不滿足泛型方法集",
"URL": "https://api.github.com/repos/golang/go/issues/48512",
"用戶": "DmitriyMV",
"Event": "created"
},
{>
"Title": "如何解決這個問題,運行gomobile bind-target = android來報告一個錯誤",
"URL": "https://api.github.com/repos/golang/go/issues/48510",
"User": "ytxyyt",
"Event": "created"
},
. . .
]
請幫助。
更新:
我問,"因為https://jmespath.org/tutorial.html的每一個例子都是關于陣列元素的過濾,而我上面的不是",并得到:
為了進行過濾,你需要一個陣列。
然而,這并不是我所期望的,因為以第一個為例,我期望被過濾的是一個JSON陣列:
[/span>
{>
"name": "foo",
"isFork": false,
"isPrivate": true,
"createdAt": "2019-04-25T20:31:07Z",
"upedAt": "2019-04-30T03:44:30Z",
"primaryLanguage": {}。
"primaryLanguage": "JavaScript"
},
{>
"name": "bar",
"isFork": false,
"isPrivate": true,
"createdAt": "2019-04-25T01:26:31Z",
"upedAt": "2019-04-28T23:16:03Z",
"primaryLanguage": {}。
"primaryLanguage": "JavaScript"
},
{>
"name": "blogs",
"isFork": false,
"isPrivate": true,
"createdAt": "2015-12-06T03:52:14Z",
"upedAt": "2016-02-27T05:17:52Z",
"primaryLanguage": {}。
"primaryLanguage": "CSS"
}
]
我可以接受 "沒辦法 "這個答案,但這似乎是一個嚴重的設計缺陷,因為JsonPath可以很容易地做到這一點。
uj5u.com熱心網友回復:
你的過濾必須發生在edges陣列上,仍然,你評估的屬性可以嵌套在物件的更深處。
所以你完全可以有一個像node.isPrivate == `true`的條件,或者更簡單,因為node.isPrivate已經是一個布林值,一個簡單的條件將讀取node.isPrivate。
給定的查詢:
data.repositoryOwner.repositories.edges[?node.isPrivate].node
我們最終得到了期望的JSON:
[/span>
{>
"name": "foo",
"isFork": false,
"isPrivate": true,
"createdAt": "2019-04-25T20:31:07Z",
"upedAt": "2019-04-30T03:44:30Z",
"primaryLanguage": {}。
"primaryLanguage": "JavaScript"
}
},
{>
"name": "bar",
"isFork": false,
"isPrivate": true,
"createdAt": "2019-04-25T01:26:31Z",
"upedAt": "2019-04-28T23:16:03Z",
"primaryLanguage": {}。
"primaryLanguage": "JavaScript"
}
},
{>
"name": "blogs",
"isFork": false,
"isPrivate": true,
"createdAt": "2015-12-06T03:52:14Z",
"upedAt": "2016-02-27T05:17:52Z",
"primaryLanguage": {}。
"primaryLanguage": "CSS"
}
}
]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/329875.html
標籤:
