如何在JSON中解码分页?

时间:2015-08-14 01:04:36

标签: php json api

我正在尝试使用chinavasion.com的API填充我的网站产品。我已经成功获取某个类别下的产品列表,但响应JSON只提供10个产品和分页,我实际上不知道如何使用,我猜测它可能是限制产品列表的一个回应' d?

以下是JSON响应示例:

{
 "products": [
  {
   "product_id": 19433,
   "model_code": "CVABR-C405",
   "short_product_name": "13.3 Inch Roof Mounted Car Monitor  ",
   "product_url": "http://www.chinavasion.com/china/wholesale/Car_Video/Roof_Monitors/13.3-Inch-Roof-Mounted-Car-Monitor/",
   "category_name": "Car Video",
   "category_url": "http://www.chinavasion.com/china/wholesale/Car_Video/",
   "subcategory_name": "Roof Monitors",
   "status": "In Stock"
  },
   .... and 9 more.

 "pagination": {
  "start": 0,
  "count": 10,
  "total": 53
 }
}

到目前为止,这是我的PHP,我只想回复所有项目的所有简短产品名称,事情是我只得到10个项目,但总共有53个项目。 (可以在样本JSON响应分页总数上看到)

<?php
$API_KEY = '4rxVx5-bxo7ldVQ5GcPSmX8XeqcSZoTnJnxF7xhRr8g.';
$url = "https://secure.chinavasion.com/api/getProductList.php";
$data = array(
'key' => $API_KEY,
'categories' => array('Car Video')
);

$content = json_encode($data);

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json"));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $content);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$json_response = curl_exec($curl);

$status = curl_getinfo($curl, CURLINFO_HTTP_CODE); 
curl_close($curl);

$response = json_decode($json_response, true);

foreach($response['products'] as $res)
{
    echo $res['short_product_name'],'<br />';
}
?>

那么有没有办法在此时获取其他43种产品?我不确定它是否可能,因为我对编程非常陌生并且以前没有做过JSON,希望你们能帮助我。

2 个答案:

答案 0 :(得分:4)

该分页数组用于表示有更多项目。您只需传递一个<New id="DS" class="org.eclipse.jetty.plus.jndi.Resource"> <Arg></Arg> <Arg>OracleDS</Arg> <Arg> <New class="oracle.ucp.jdbc.PoolDataSourceImpl"> <Set name="URL">jdbc:oracle:thin:@abc.corp.com:1234:xyz</Set> <Set name="user">owner</Set> <Set name="password”>pwd</Set> <Set name="connectionFactoryClassName">oracle.jdbc.pool.OracleDataSource</Set> <Set name="minPoolSize">0</Set> <Set name="maxPoolSize">10</Set> <Set name="inactiveConnectionTimeout">300</Set> <Set name="maxStatements">200</Set> <Set name="maxConnectionReuseCount">150</Set> <Set name="connectionWaitTimeout">9</Set> <Set name="abandonedConnectionTimeout">30</Set> <Set name="validateConnectionOnBorrow">true</Set> <Set name="SQLForValidateConnection">SELECT SYSDATE FROM DUAL</Set> </New> </Arg> </New> 变量即可获得下一个10.将其视为SQL中的偏移量。

答案 1 :(得分:2)

接下来的10个项目:

$('div').filter('.' + target).addClass('active');

更改'pagination'=&gt; 'start'参数可以设置起始项索引。

修改 你必须在'pagination'数组中插入'start'参数。 另一种方法是将'count'参数设置为一个大数字。这样,您只需一次通话即可收到所有项目

$API_KEY = '4rxVx5-bxo7ldVQ5GcPSmX8XeqcSZoTnJnxF7xhRr8g.';
$url = "https://secure.chinavasion.com/api/getProductList.php";
$data = array(
'key' => $API_KEY,
'categories' => array('Car Video'),
'pagination' => array('start' => 10)
);

$content = json_encode($data);