[jq] startswith() requires string inputs エラーを回避する
作成日: 2026年09月17日
startswith に null や数値などの文字列以外の値を渡すと、startswith() requires string inputs エラーが発生します。
例えば、name に null を含む JSON を処理するとエラーになります。
echo '[{"name":"Taro"},{"name":null}]' | jq '.[] | select(.name | startswith("T"))'
実行結果です。
{
"name": "Taro"
}
jq: error (at <stdin>:1): startswith() requires string inputs
文字列だけを startswith の対象にするには、type で型を確認します。
echo '[{"name":"Taro"},{"name":null},{"name":123},{"name":"Satoshi"}]' | jq '.[] | select(.name | type == "string" and startswith("T"))'
実行結果です。
{
"name": "Taro"
}
type == "string" を満たす値だけに startswith を適用することで、null や数値を含む JSON でもエラーを回避できます。