JQ能否以数字/行作为分类?如何用JQ获取带连字符键的模型值?
问题1:JQ是否支持将数字或行作为分类使用?
- 支持数字作为键:若JSON中的键为数字(如
{"123": "demo"}),可通过.[123]或."123"的方式访问对应值。 - 支持包含特殊字符或多行的键:对于带连字符、空格或多行内容的键,需用引号包裹键名,通过
."键名"或["键名"]的格式访问。例如多行键{"first line\nsecond line": "content"},可使用."first line\nsecond line"或["first line\nsecond line"]获取对应值。
问题2:获取带连字符的键对应字段值的语法错误解决办法
原命令的问题:
- 你的JSON数据顶层没有
cars键,直接以MS-23-AMW、SJ-08-REW作为顶层键,原命令中的cars.属于多余部分。 - 键名
MS-23-AMW包含连字符,JQ的点语法(.)无法识别带特殊字符的键名,必须改用括号加引号的方式访问。
正确命令示例:
jq '."MS-23-AMW".model' cars.json
或
jq '.["MS-23-AMW"].model' cars.json
执行后会输出:
"A8"
内容的提问来源于stack exchange,提问作者Norbinette
相关产品推荐
相关产品推荐

