问题描述
我正在使用eBay配送API来检索JSON格式的订单。我一直在响应中包含“总计”字段的问题:当我的日期范围包含特定时间(今天大约是世界标准时间10:07)时,它始终大于1。
这里是var_dump
d示例响应的PHP / Xdebug json_decode
,它修剪了实际的(不相关的)订单数据。请注意'total'
和size
之间的区别:
object(stdClass)[22]
public 'href' => string 'https://api.ebay.com/sell/fulfillment/v1/order?filter=lastmodifieddate:%5B2020-10-12T14:44:56.000Z..%5D,orderfulfillmentstatus:%7BIN_PROGRESS%7CNOT_STARTED%7D&limit=200&offset=0' (length=177)
public 'total' => int 177
public 'limit' => int 200
public 'offset' => int 0
public 'orders' =>
array (size=176)
...
我尝试使用默认值作为限制和偏移量,在这种情况下,最后一页的订单数太少(offset+size(array)==total+1
)。我还用不同的开始日期运行了好几次,以确保它不是一个奇怪的计时问题。只要lastmodifieddate
比今天的世界标准时间10:08更新,数字就适合,否则就不适合。
这仅仅是eBay API中的错误还是更深层的含义?我会假设这个数字可以告诉我当前查询中包含的订单总数(不考虑限额和抵消),但是这种不一致使我相信它可以算出一些不包括在内的订单(例如已完成的订单或未付款的订单)。
奇怪的是,当我调整限制和偏移量以准确地适合实际数组大小时,它实际上包括一个“下一个”字段,并使用该字段的值来检索“下一页”(这是最后一个顺序)结果在此:
object(stdClass)[22]
public 'href' => string 'https://api.ebay.com/sell/fulfillment/v1/order?filter=lastmodifieddate:%5B2020-10-13T09:29:03.000Z..%5D,orderfulfillmentstatus:%7BIN_PROGRESS%7CNOT_STARTED%7D&limit=78&offset=78' (length=177)
public 'total' => int 79
public 'prev' => string 'https://api.ebay.com/sell/fulfillment/v1/order?filter=lastmodifieddate:%5B2020-10-13T09:29:03.000Z..%5D,orderfulfillmentstatus:%7BIN_PROGRESS%7CNOT_STARTED%7D&limit=78&offset=0' (length=176)
public 'limit' => int 78
public 'offset' => int 78
public 'orders' =>
array (size=0)
empty
对此行为有解释吗?
侧面说明:我没有将问题标记为PHP
,因为问题出在我从REST API获得的json响应中,而与我使用何种语言无关。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)