2017-03-07 17 views
1

我这个工作从第三方API返回可以得到这样的巨大对象:得到固定JSON的数量从第三方API对象

$.getJSON('https://www.saferproducts.gov/RestWebServices/Recall?format=json', function(json, textStatus) { 
     console.log(json); 
}); 

这会返回〜7000个对象。在API调用中没有办法指定要返回的对象数量。这是全部或没有。

这里是一个问题......我可以使用getJSON(或类似的)只获得前5个对象,并停止,而无需首先加载整个JSON文件?

+0

如果服务没有提供减少对象数量的方法,那么不,无法加载整个文件。你可以做的最好的事情就是将文件加载为文本,然后使用一些字符串操作来获得你想要的对象。但是,这可能会花费与解析JSON一样多的时间,并且会更容易出错。 –

+0

不会。它返回返回的内容,只能修改它或在*之后使用*。 – Archer

+0

可能的重复http://stackoverflow.com/questions/31589289/how-to-set-limit-while-fetching-data-using-getjson? – stybl

回答

0

我做了一些类似的事情。我使用PHP来获取api的网页。然后我会缓存它。通过PHP逻辑,我在一个包含网页所有信息的文本文件中存储了一个变量。我有另一个存储时间戳的文件。然后,当页面被调用时,php会检查时间戳以查看它的年龄。如果太旧,它会重新缓存页面并返回相关信息。如果它仍然有效,它只会返回缓存的信息。如果你只想要最后5个,那么PHP逻辑不会太难写入。然后,jQuery将查询PHP页面。

0

他们没有任何文件中提到限制回报的内容。我认为他们的意图是让你缩小搜索范围,以免抓取每一件物品。你可以随时给他们发电子邮件,并问Mike McCaughan所说的话,如果他们没有“限制”,那么不会,这是不可能的。

它也像他们提供每周下载,你可以只创建自己的API,并添加限制属性:

https://www.fda.gov/%20Safety/Recalls/EnforcementReports/default.htm

参考:

如果确实没有限制该调用的选项,那么我建议缓存,在调用发生或缩小查询时显示某种处理轮。他们可以选择以下筛选方式进行筛选,如下所示:

RecallNumber 
RecallDateStart 
RecallDateEnd 
LastPublishDateStart 
LastPublishDateEnd 
RecallURL 
RecallTitle 
ConsumerContact 
RecallDescription 
ProductName 
ProductDescription 
ProductModel 
ProductType 
RecallInconjunctionCountry 
ImageURL 
Injury 
ManufacturerCountry 
UPC – see caveat below 
Hazard 
Manufacturer 
Remedy 
Retailer