[英]parsing paginated json from web service
我正在嘗試分析從遠程Web服務生成的大量JSON數據。 產生的輸出在500個URI中分頁,每個URI包含100個JSON對象。 我需要將每個JSON對象中的屬性(即DOI(數字對象標識符))與從本地數據庫中獲取的相應字段進行匹配,然后更新記錄。
我遇到的問題是控制我的循環結構以查找匹配的JSON DOI,同時確保已解析所有數據。
如您所見,我嘗試使用break和continue語句的組合,但是我無法“移動”超出第一個URI。
后來我引入了一個標志變量來幫助控制循環而沒有效果。
while($obj = $result->fetch_object()){
for($i=1;$i<=$outputs_json['meta']['response']['total-pages'];$i++){
$url = 'xxxxxxxxxxxxxxx&page%5Bnumber%5D='."$i".'&page%5Bsize%5D=100';
if($outputs = json_decode(file_get_contents($url),true)===false){
}
else{
try{
$outputs = json_decode(file_get_contents($url),true);
$j=0;
do{
$flag = false;
$doi = trim($outputs['data'][$j]['attributes']['identifiers']['dois'][0], '"');
if(!utf8_encode($obj->doi)===$doi) continue;
}else{
$flag = true;
$j++;
}
}while($j!==101);
if($flag===true) break;
} catch(Exception $e) {
}
}
}
}
}確保在所有URI處解析每個JSON對象並且僅當獲取的記錄的DOI字段與傳入JSON數據的DOI屬性匹配時才對數據庫執行CRUD操作的最佳方法是什么?
我不是100%肯定我了解您問題的各個方面,但對我而言,更改執行順序是有意義的
我認為從本地數據庫中獲取一條記錄並嘗試在100個不同的遠程調用中找到它不是一個好主意-相反,最好將工作流/循環基於獲取的遠程數據,並嘗試在本地數據庫中找到相應的元素
如果您認為該方法適合您的任務,那么我當然可以為您提供代碼:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.