问题描述
我正在尝试通过bash中的jq从json中获取一些值。较小的值可以很好地工作,而较大的json则工作太慢,例如每2-3秒1个值。我的代码示例:
json=$(curl -s -A "some useragent" "url" )
pid=$(cat idlist.json | jq '.page_ids[]')
for id in $pid
do
echo $pagejson|jq -r '.page[]|select(.id=='$id')|.url'>>path.url
done
“ pid”是我在运行脚本之前键入的ID的列表。它可能包含700-1000个ID。 json的示例对象
{
"page":[
{
"url":"some url","id":some numbers
},{
"url":"some url","id":some numbers
}
]
}
有什么办法可以加快速度吗?在javascript中,它的工作速度比它快。 javascript范例:
//First sort object with order
var url="";
var sortedjson= ids.map(id => obj.find(page => page.id === id));
//Then collect url
for ( x=0 ; x < sortedjson.length;x++) {
url+=sortedjson[x].url
};
我应该像在javascript中那样对json进行排序以获得更好的性能吗?我不尝试,因为不知道。
编辑:
用json替换了“ pid”变量以使用更少的代码,用for id in $(echo $pid)
替换了for id in $pid
。
但是,如果ID列表超过50个,它仍然会变慢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)