我需要创建一个从JSON API中提取数据的网站。该信息是包含以下JSON格式的以下数组的产品目录。
[{
"id": "1",
"name": "Product Name",
"Description": "Lorem Ipsum"
},
{
"id": "2",
"name": "Product no 2"
"Description": "Lorem Ipsum"
}]
我已经成功使用curl来获取JSON和json_decode数据。
我需要我的网站有一个索引页面,其中包含链接到包含描述的更详细信息页面的产品列表(仅包含名称)。
我需要有关如何最好地解决这个问题的帮助。
由于
答案 0 :(得分:1)
根据我的理解,您需要index.php
完成这两项工作:充当目录和作为产品演示页面。
您需要做的第一件事是检查是否设置了$_GET['product']
,在这种情况下您应该展示产品,否则会呈现目录。
您可以从以下操作开始:
$cat=json_decode($retrieved_json);
if(!isset($_GET['product']))
{
// act as a catalog
$n=count($cat);
echo "<h3><em>$n</em> products:</h3>\n<ul>";
foreach($cat as $product)
echo "<li><a href='?product={$product->id}'>{$product->name}</a></li>\n";
echo "</ul>";
}
else
{
$product=$product_by_id($_GET['roduct']);
if($product)
{
// act as a product presentation, if the id exists
echo "<h3>{$product->name}</h3>\n";
echo "<p>{$product->Description}</p>\n";
echo "<p><em>Product id:<strong>{$product->id}</strong></em></p>\n";
}
else
// display an error for non-existent ids
echo "<h2>No product with id={$_GET['roduct']} was found!</h2>";
}
// returns $cat's entry for the product $id
// or false if not found
function product_by_id($id)
{
global $cat;
for($i=0;($i<count($cat)))&&($cat[$i]->id!=$id));$i++) {}
return ($i<count($cat)?$cat[$i]:false);
}
答案 1 :(得分:0)
有趣。大多数时候你会使用AJAX从服务器返回JSON数据,我想你可以使用curl做同样的事情。如果你能够将json字符串赋值给变量,你可以简单地json_decode它来创建一个php对象。
示例:
$curl_response = getCurlData(); // Pretend this is your CURL retrieving function
$obj = json_decode($curl_response);
然后你可以像对待任何对象一样遍历该对象中的值:
foreach ($obj as $data) {
echo '<a href="index.php?product=' . $data->id . '">Product</a>';
}