0

我需要创建一个从 JSON API 中提取数据的网站。该信息是一个产品目录,其中包含以下 JSON 格式的数组。

[{
    "id": "1",
    "name": "Product Name",
    "Description": "Lorem Ipsum"
},
{
    "id": "2",
    "name": "Product no 2"
    "Description": "Lorem Ipsum"
}]

我已经成功地使用 curl 来获取 JSON 和 json_decode 数据。

我需要我的网站有一个包含产品列表(只有名称)的索引页面,该页面链接到包含描述的更多详细信息页面。

我需要有关如何最好地解决此问题的帮助。

谢谢

4

2 回答 2

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>';
}
于 2013-10-08T05:38:50.903 回答
0

据我了解,您需要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);
  }
于 2013-10-08T06:04:27.110 回答