我尝试将一个Amazon API响应对象保存到一个名为items.json的文件中。响应本身在json中,但是当我使用这个函数时,我得到的文件是空的。不要介意unlink()函数,这是一个cron作业。
<?php
/**
* Amazon ECS library
*/
if ("cli" !== PHP_SAPI)
{
echo "<pre>";
}
if (is_file('sampleSettings.php'))
{
include 'sampleSettings.php';
}
defined('AWS_API_KEY') or define('AWS_API_KEY', 'API KEY');
defined('AWS_API_SECRET_KEY') or define('AWS_API_SECRET_KEY', 'SECRET KEY');
defined('AWS_ASSOCIATE_TAG') or define('AWS_ASSOCIATE_TAG', 'ASSOCIATE TAG');
require '../lib/AmazonECS.class.php';
try
{
$amazonEcs = new AmazonECS('AWS_API_KEY', 'AWS_API_SECRET_KEY', 'com', 'AWS_ASSOCIATE_TAG');
$amazonEcs->associateTag(AWS_ASSOCIATE_TAG);
$response = $amazonEcs->category('KindleStore')->responseGroup('Small,Images')->search('free ebooks');
//Check if the json file exist
$filename = "/home/myusername/public_html/my/path_to/items.json";
if(file_exists($filename)){
//delete it
unlink($filename);
file_put_contents("items.json", $response);
}else{
file_put_contents("items.json", $response);
}
}
catch(Exception $e)
{
echo $e->getMessage();
}
if ("cli" !== PHP_SAPI)
{
echo "</pre>";
}
对于如何解决这个问题有什么建议吗?
编辑:$response变量不为空;下面是当我使用var_dump时得到结果:
["Item"]=>
array(10) {
[0]=>
object(stdClass)#15 (8) {
["ASIN"]=>
string(10) "B004YDSL9Q"
["DetailPageURL"]=>
string(208) "http://www.amazon.com/The-Love-suspense-mystery-ebook/dp/B004YDSL9Q%3F"
["ItemLinks"]=>
object(stdClass)#16 (1) {
["ItemLink"]=>
array(7) {
[0]=>
object(stdClass)#17 (2) {
["Description"]=>
string(17) "Technical Details"
["URL"]=>
string(218) "http://www.amazon.com/The-Love-suspense-mystery-ebook/dp/tech-data/B004YDSL9Q%3F"
}
[1]=>
object(stdClass)#18 (2) {
["Description"]=>
string(20) "Add To Baby Registry"
["URL"]=>
string(215) "http://www.amazon.com/gp/registry/baby/add-item.html"
}
[2]=>
object(stdClass)#19 (2) {
["Description"]=>
string(23) "Add To Wedding Registry"
["URL"]=>
string(218) "http://www.amazon.com/gp/registry/wedding/add-item.html%3Fasin.0%3DB004YDSL9Q%26"
}
[3]=>
object(stdClass)#20 (2) {
["Description"]=>
string(15) "Add To Wishlist"
["URL"]=>
string(219) "http://www.amazon.com/gp/registry/wishlist/add-item.html%3Fasin.0%3DB004YDSL9Q%26"
}
[4]=>
object(stdClass)#21 (2) {
["Description"]=>
string(13) "Tell A Friend"
["URL"]=>
string(184) "http://www.amazon.com/gp/pdp/taf/B004YDSL9Q%3F"
}
[5]=>
object(stdClass)#22 (2) {
["Description"]=>
string(20) "All Customer Reviews"
["URL"]=>
string(188) "http://www.amazon.com/review/product/B004YDSL9Q%3FSubscriptionId%3"
}
[6]=>
object(stdClass)#23 (2) {
["Description"]=>
string(10) "All Offers"
["URL"]=>
string(190) "http://www.amazon.com/gp/offer-listing/B004YDSL9Q%3"
}
}
}
以及其他物品。
我错了API响应不是JSON,它是一个Object,您必须用JSON对其进行编码。
- 这就是我如何解决**
-cut-
$response = $amazonEcs->category('KindleStore')->responseGroup('Small,Images')->search('free ebooks');
//json_encode on $response because the response of the API is not JSON, but it is an object
$data = json_encode($response);
//Using stripslashes function to delete all the slashed that has been added to $data by the encoding process
$data2 = stripslashes($data);
file_put_contents("items.json", $data2);
1条答案
按热度按时间jfewjypa1#
如果你创建的文件是空的,那么
$response
变量也是空的,对响应进行一些调试,看看你得到了什么,如果文件显示在它应该显示的地方,但是是空的,那么它就取决于你试图存储在里面的东西,在这里是$response
的情况。所以这样做:
那就回来告诉我们你看到了什么。
附言:我会把这个作为一个评论(因为我知道这不是一个很好的答案),但我没有代表。