0

我正在使用以下 PHP 代码返回一个 json 字符串:

$itemURL = 'http://***.***.***/search?tag=Football&affiliate_id=&max_results=3';
$response = file_get_contents($itemURL);//curl_exec($curlHandle);
echo $response;
$response = array($response);
echo $response[0];

我得到一个看起来像这样的 json 字符串:

[ {“ID”:“123”,“描述”:“冠军足球海军 T 恤”,“HighPrice”:16.99,“LowPrice”:16.99,“SalePrice”:null,“OnSale”:false,“URL” :“http://www.mystore.com/itemDescription”,“ImageURL”:“http://www.mystore.com/mainstore/045.jpg”,“LargeImageURL”:“http://www.mystore. com/mainstore/045.jpg”、“ThumbnailImageURL”:“http://www.mystore.com/mainstore/045.jpg”、“MiniImageURL”:“http://www.mystore.com/mainstore/045。 jpg", "AffiliateID": "" }, { "ID": "23", "描述”:“Champion Football Navy T 恤 XL”,“HighPrice”:16.99,“LowPrice”:16.99,“SalePrice”:null,“OnSale”:false,“URL”:“http://www.mystore. com/itemDescription”、“ImageURL”:“http://www.mystore.com/mainstore/045.jpg”、“LargeImageURL”:“http://www.mystore.com/mainstore/045.jpg”、“ ThumbnailImageURL”:“http://www.mystore.com/mainstore/045.jpg”,“MiniImageURL”:“http://www.mystore.com/mainstore/045.jpg”,“AffiliateID”:“”} ]“SalePrice”:null,“OnSale”:false,“URL”:“http://www.mystore.com/itemDescription”,“ImageURL”:“http://www.mystore.com/mainstore/045.jpg ", "LargeImageURL": "http://www.mystore.com/mainstore/045.jpg", "ThumbnailImageURL": "http://www.mystore.com/mainstore/045.jpg", "MiniImageURL": "http://www.mystore.com/mainstore/045.jpg", "AffiliateID": "" } ]“SalePrice”:null,“OnSale”:false,“URL”:“http://www.mystore.com/itemDescription”,“ImageURL”:“http://www.mystore.com/mainstore/045.jpg ", "LargeImageURL": "http://www.mystore.com/mainstore/045.jpg", "ThumbnailImageURL": "http://www.mystore.com/mainstore/045.jpg", "MiniImageURL": "http://www.mystore.com/mainstore/045.jpg", "AffiliateID": "" } ]http://www.mystore.com/mainstore/045.jpg”、“ThumbnailImageURL”:“http://www.mystore.com/mainstore/045.jpg”、“MiniImageURL”:“http://www. mystore.com/mainstore/045.jpg", "AffiliateID": "" } ]http://www.mystore.com/mainstore/045.jpg”、“ThumbnailImageURL”:“http://www.mystore.com/mainstore/045.jpg”、“MiniImageURL”:“http://www. mystore.com/mainstore/045.jpg", "AffiliateID": "" } ]

但是,当我回显 $response[0] 时,我得到了整个字符串。如果我使用 json_decode 或 encode 我会得到一个字符串,但它周围有引号。我不知道如何投射这个该死的东西,所以它作为一个对象数组运行,然后我可以迭代。感谢您提前提供任何帮助

4

3 回答 3

2

尝试这个...

$itemURL = 'http://***.***.***/search?tag=Football&affiliate_id=&max_results=3';
$response = file_get_contents($itemURL);//curl_exec($curlHandle);
$response = json_decode($response);

你会得到一个像...

array(2) {
  [0]=>
  object(stdClass)#1 (12) {
    ["ID"]=>
    string(3) "123"
    ["Description"]=>
    string(30) "Champion Football Navy T-shirt"
    ["HighPrice"]=>
    float(16.99)
    ["LowPrice"]=>
    float(16.99)
    ["SalePrice"]=>
    NULL
    ["OnSale"]=>
    bool(false)
    ["URL"]=>
    string(38) "http://www.mystore.com/itemDescription"
    ["ImageURL"]=>
    string(40) "http://www.mystore.com/mainstore/045.jpg"
    ["LargeImageURL"]=>
    string(40) "http://www.mystore.com/mainstore/045.jpg"
    ["ThumbnailImageURL"]=>
    string(40) "http://www.mystore.com/mainstore/045.jpg"
    ["MiniImageURL"]=>
    string(40) "http://www.mystore.com/mainstore/045.jpg"
    ["AffiliateID"]=>
    string(0) ""
  }
  [1]=>
  object(stdClass)#2 (12) {
    ["ID"]=>
    string(2) "23"
    ["Description"]=>
    string(33) "Champion Football Navy T-shirt XL"
    ["HighPrice"]=>
    float(16.99)
    ["LowPrice"]=>
    float(16.99)
    ["SalePrice"]=>
    NULL
    ["OnSale"]=>
    bool(false)
    ["URL"]=>
    string(38) "http://www.mystore.com/itemDescription"
    ["ImageURL"]=>
    string(40) "http://www.mystore.com/mainstore/045.jpg"
    ["LargeImageURL"]=>
    string(40) "http://www.mystore.com/mainstore/045.jpg"
    ["ThumbnailImageURL"]=>
    string(40) "http://www.mystore.com/mainstore/045.jpg"
    ["MiniImageURL"]=>
    string(40) "http://www.mystore.com/mainstore/045.jpg"
    ["AffiliateID"]=>
    string(0) ""
  }
}

然后,您可以使用 $response[0]、$response[1] 等访问您的 JSON 对象...例如使用字段的特定名称,例如$response[0]->AffiliateID

于 2012-06-29T22:05:25.073 回答
1

你需要打电话给你正在寻找的财产

IE:

echo response[0].ID; //getting the 1st item in the response array then access the "ID" property of the json object.

json 响应是一个动态对象,它允许您与所有属性进行交互,就像您从头开始创建对象一样。

[{... 和 ... }] 中的值是对象值。

所以...

var json = '{"ID" : 1, "Prop1" : "Value1", Prop2 : "Value2" }';

可以使用 jQuery 的 parseJSON 方法进行解析

var obj= jQuery.parseJSON(json);
echo obj.ID; //1
echo obj.Prop1; //Value
echo obj.Prop2; //Value2

当您在 { 和 } 周围有 [... 和 ...] 时,您知道该对象是一个数组,需要相应地处理。

希望这可以帮助。

wm

于 2012-06-29T22:07:00.057 回答
0
if (mysql_num_rows($result) > 0) {
$response["events"] = array();

while ($row = mysql_fetch_array($result)) {
      $tmparr = array();
        $tmparr["uid"] = $row["uid"];
        $tmparr["date"] = $row["date"];
        $tmparr["hours"] = $row["hours"];
        $tmparr["store_name"] = $row["store_name"];
        $tmparr["event_information"] = $row["event_information"];
        $tmparr["event_type"] = $row["event_type"];
        $tmparr["Phone"] = $row["Phone"];
        $tmparr["price"] = $row["price"];
        $tmparr["address"] = $row["address"];
        $tmparr["image_url"] = $row["image_url"];
        $tmparr["created_at"] = $row["created_at"];
        $tmparr["updated_at"] = $row["updated_at"];
        array_push($response["events"], $tmparr);
}    
$response["success"] = 1;
echo json_encode($response);

我不明白您要做什么,但这是我用来从 sql 查询 ($result) 返回数据行数组的方式。我希望这可以帮助你

于 2012-06-29T22:10:32.100 回答