我想從用管道分隔的 json 檔案中添加一些值。到目前為止它運行良好,直到一個值是一個數字而不是一個字串。
這是我到目前為止所做的:jq -r '.content[] | {seasonTitle, number, name} | join("|")' file.json
我試圖將數字轉換為字串但沒有成功jq -r '.content[] | {seasonTitle, "episodeNumber|tostring", name} | join("|")' file.json
實際結果:
Top Master||Last Chance / Season 12
Top Master||épisode 8 / Season 12
Top Master||épisode 7 / Season 12
預期結果:
Top Master|236|Last Chance / Season 12
Top Master|235|épisode 8 / Season 12
Top Master|234|épisode 7 / Season 12
這里是file.json
{
"page": 0,
"size": 3,
"count": 3,
"content": [
{
"name": "Last Chance / Season 12",
"releaseDate": "2008",
"duration": 2100,
"episodeNumber": 236,
"title": "Last Chance / Season 12",
"seasonTitle": "Top Master"
},
{
"name": "épisode 8 / Season 12",
"releaseDate": "2008",
"duration": 7320,
"episodeNumber": 235,
"title": "épisode 8 / Season 12",
"seasonTitle": "Top Master"
},
{
"name": "épisode 7 / Season 12",
"releaseDate": "2008",
"duration": 7200,
"episodeNumber": 234,
"title": "épisode 7 / Season 12",
"seasonTitle": "Top Master"
}
]
}
uj5u.com熱心網友回復:
您join用于連接不同型別的值,這在 jq v1.6 下作業正常:
.content[] | {seasonTitle, episodeNumber, name} | join("|")
Top Master|236|Last Chance / Season 12
Top Master|235|épisode 8 / Season 12
Top Master|234|épisode 7 / Season 12
演示
但是,對于 jq v1.5,它不會,您需要使用tostring. 當您使用快捷方式為 創建物件時join,引入此轉換會犧牲解決方案的簡潔性。所以要么堅持下去:
.content[] | {seasonTitle, episodeNumber: (.episodeNumber | tostring), name} | join("|")
或者改用陣列,因為無論如何你只需要這些值:
.content[] | [.seasonTitle, (.episodeNumber | tostring), .name] | join("|")
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/432462.html
上一篇:如何提高這個json搜索的效率
