2016-09-30 50 views
0

我无法过滤以下内容。无法使用jq过滤JSON输出。我正在使用CURL

我需要找出以下面的JSON文件的名称标签下的“SnapshotSet”开头的名称数。

示例 - "name": "SnapshotSet.1475076959480"

第一步我试图筛选出开始SnapshotSet的所有名称...但收到以下错误。

JQ '.snapshot-sets[]' testjq 错误:集时,不定义

但是当我过滤掉的链接,我能得到一个输出

jq '.links[]' testjq 
{ 
    "href": "https://test.com/api/json/v2/types/snapshot-sets/", 
    "rel": "self" 
} 

任何与名字“快照集”?

请在下面找到JSON文件。

{ 
"links": [ 
    { 
     "href": "https://test.com/api/json/v2/types/snapshot-sets/", 
     "rel": "self" 
    } 
], 
"snapshot-sets": [ 
    { 
     "href": "https://test.com/api/json/v2/types/snapshot-sets/1", 
     "name": "SnapshotSet.1475076959480" 
    }, 
    { 
     "href": "https://test.com/api/json/v2/types/snapshot-sets/3", 
     "name": "SnapshotSet.1475165496304" 
    }, 
    { 
     "href": "https://test.com/api/json/v2/types/snapshot-sets/2", 
     "name": "SnapshotSet.1475158265437" 
    }, 
    { 
     "href": "https://test.com/api/json/v2/types/snapshot-sets/63659", 
     "name": "server1a_b_c_STFS1474869600618" 
    }, 

回答

1

如所解释的here,当键包含-字符不能被使用的缩写形式.keyname

您可以运行以下从您的文件中获得的所有名称的列表:

jq '."snapshot-sets"[].name' testjq 
+0

太谢谢你了。它工作完美:-) –