Проверьте тип данных JSON с помощью jq - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь проверить фактический тип данных значения JSON, принадлежащего определенному ключу.

test.json

{
    "id": 50,
    "name": "Joe"
}

Я хочу что-то похожее на это:

$ `jq 'typeof("id")' < test.json`
(output)>> string

Возможно ли это с помощью jq?

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Вы можете использовать функцию type, чтобы получить тип значения в виде строки.

Пример: https://jqplay.org/jq?q=map(type)&j=%5B0%2C%20false%2C%20%5B%5D%2C%20%7B%7D%2C%20null%2C%20%22hello%22%5D

0 голосов
/ 15 января 2019

Использование type:

jq -r '[1.23,"abc",true,[],{},null][]| type' <<< '""'
number
string
boolean
array
object
null

В вашем примере вы можете проверить:

jq '.id|type=="number"' file.json

Или используйте его в фильтре select для отображения тех идентификаторов, которые не , например:

jq '.[]|select(id|type=="number"|not)' file.json
...