簡體   English   中英

JSONPATH 查詢以便對數組的長度設置條件?

[英]JSONPATH query in order to put condition on length of array?

$.paths["/inventory"].get.parameters.length

我對 select 的參數 og 進行了此查詢 get 請求並且它如何工作我想對數組的長度設置條件以便我可以說 /inventory get 請求必須有 2 個參數而不是更多; 是這樣的:

[($.paths["/inventory"].get.parameters.length == 3)]

最后一個查詢不起作用這只是我的想象 x)

這是 json 示例:

 { "openapi": "3.0.0", "servers": [ ], "info": { "description": "This is a simple API", "version": "1.0.0", "title": "ICP basic wallet", "contact": { "email": "you@your-company.com" }, "license": { "name": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" } }, "tags": [ { "name": "admins", "description": "Secured Admin-only calls" }, { "name": "developers", "description": "Operations available to regular developers" } ], "paths": { "/inventory": { "get": { "tags": [ "developers" ], "summary": "searches inventory", "operationId": "searchInventory", "description": "By passing in the appropriate options, you can search for\navailable inventory in the system\n", "parameters": [ { "in": "query", "name": "searchString", "description": "pass an optional search string for looking up inventory", "required": false, "schema": { "type": "string" } }, { "in": "query", "name": "skip", "description": "number of records to skip for pagination", "schema": { "type": "integer", "format": "int32", "minimum": 0 } }, { "in": "query", "name": "limit", "description": "maximum number of records to return", "schema": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 50 } } ], "responses": { "200": { "description": "search results matching criteria", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/InventoryItem" } } } } }, "400": { "description": "bad input parameter" } } }, "post": { "tags": [ "admins" ], "summary": "adds an inventory item", "operationId": "addInventory", "description": "Adds an item to the system", "responses": { "201": { "description": "item created" }, "400": { "description": "invalid input, object invalid" }, "409": { "description": "an existing item already exists" } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InventoryItem" } } }, "description": "Inventory item to add" } } } }, "components": { "schemas": { "InventoryItem": { "type": "object", "required": [ "id", "name", "manufacturer", "releaseDate" ], "properties": { "id": { "type": "string", "format": "uuid", "example": "d290f1ee-6c54-4b01-90e6-d701748f0851" }, "name": { "type": "string", "example": "Widget Adapter" }, "releaseDate": { "type": "string", "format": "date-time", "example": "2016-08-29T09:12:33.001Z" }, "manufacturer": { "$ref": "#/components/schemas/Manufacturer" } } }, "Manufacturer": { "required": [ "name" ], "properties": { "name": { "type": "string", "example": "ACME Corporation" }, "homePage": { "type": "string", "format": "url", "example": "https://www.acme-corp.com" }, "phone": { "type": "string", "example": "408-867-5309" } }, "type": "object" } } } }

Vanilla JS 可以這樣做

 const parms = obj.paths["/inventory"].get.parameters if (parms.length<3) console.log("Too little parms") else console.log(parms.length, "are enough parameters")
 <script> const obj = { "openapi": "3.0.0", "servers": [], "info": { "description": "This is a simple API", "version": "1.0.0", "title": "ICP basic wallet", "contact": { "email": "you@your-company.com" }, "license": { "name": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" } }, "tags": [{ "name": "admins", "description": "Secured Admin-only calls" }, { "name": "developers", "description": "Operations available to regular developers" }], "paths": { "/inventory": { "get": { "tags": ["developers"], "summary": "searches inventory", "operationId": "searchInventory", "description": "By passing in the appropriate options, you can search for\navailable inventory in the system\n", "parameters": [{ "in": "query", "name": "searchString", "description": "pass an optional search string for looking up inventory", "required": false, "schema": { "type": "string" } }, { "in": "query", "name": "skip", "description": "number of records to skip for pagination", "schema": { "type": "integer", "format": "int32", "minimum": 0 } }, { "in": "query", "name": "limit", "description": "maximum number of records to return", "schema": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 50 } }], "responses": { "200": { "description": "search results matching criteria", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/InventoryItem" } } } } }, "400": { "description": "bad input parameter" } } }, "post": { "tags": ["admins"], "summary": "adds an inventory item", "operationId": "addInventory", "description": "Adds an item to the system", "responses": { "201": { "description": "item created" }, "400": { "description": "invalid input, object invalid" }, "409": { "description": "an existing item already exists" } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InventoryItem" } } }, "description": "Inventory item to add" } } } }, "components": { "schemas": { "InventoryItem": { "type": "object", "required": ["id", "name", "manufacturer", "releaseDate"], "properties": { "id": { "type": "string", "format": "uuid", "example": "d290f1ee-6c54-4b01-90e6-d701748f0851" }, "name": { "type": "string", "example": "Widget Adapter" }, "releaseDate": { "type": "string", "format": "date-time", "example": "2016-08-29T09:12:33.001Z" }, "manufacturer": { "$ref": "#/components/schemas/Manufacturer" } } }, "Manufacturer": { "required": ["name"], "properties": { "name": { "type": "string", "example": "ACME Corporation" }, "homePage": { "type": "string", "format": "url", "example": "https://www.acme-corp.com" }, "phone": { "type": "string", "example": "408-867-5309" } }, "type": "object" } } } } </script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM