我是jq
库的新手,这里我正在阅读json的HotelInfo
字段:
./jq-linux64 '.HotelInfo' 74687.json
{
"HotelURL": "http://www.tripadvisor.com/aaa.html",
"HotelID": "74687",
"Price": "$156"
}
现在,我要向该数组添加{city: tehran}
对象:
./jq-linux64 --arg city tehran '.HotelInfo +{city: $city}' 74687.json
{
"HotelURL": "http://www.tripadvisor.com/aaa.html",
"HotelID": "74687",
"Price": "$156",
"city": "tehran"
}
它已经完成了,但是这也没有反映在文件上,并且文件仍然没有用这个新记录更新,我该如何更新json文件呢?
答案 0 :(得分:0)
您需要将结果写入一个临时文件,并将其重命名为原始文件:
./jq-linux64 --arg city tehran '.HotelInfo +{city: $city}' 74687.json > temp.json
mv temp.json 74687.json
答案 1 :(得分:0)
答案 2 :(得分:0)
如果您想保留原始的json结构并仅附加新值,则可以使用:
$ jq '.HotelInfo.city = "tehran"' 74687.json > 74687.jso.tmp
$ mv 74687.json.tmp 74687.json
这将使用以前的所有字段/对象更新文件:
{
"HotelInfo": {
"HotelURL": "http://www.tripadvisor.com/aaa.html",
"HotelID": "74687",
"Price": "$156",
"city": "tehran"
}
}
如果您只是想创建一个新结构,请删除.HotelInfo
内的其他可能的键
$ jq --arg city tehran '.HotelInfo +{city: $city}' 74687.json > 74687.jso.tmp
$ mv 74687.json.tmp 74687.json
这将仅使用Hotelinfo
对象内容创建文件:
{
"HotelURL": "http://www.tripadvisor.com/aaa.html",
"HotelID": "74687",
"Price": "$156",
"city": "tehran"
}