2012-02-04 134 views
4

以下是異步發送到我的php頁面的JSON。它本質上是一個產品列表,它將被插入mySQL數據庫。如何在PHP中處理JSON?

我的問題是解碼PHP中的JSON。我可以在js中使用'eval'函數做到這一點,但是在PHP中,我的努力導致了一系列複雜的爆炸和內爆函數。

{ 
    "Product": [ 
     { 
      "Product_Title": "Cloth", 
      "Product_Description": "Here is cloth", 
      "Price": "100", 
      "Category_ID": "1" 
     }, 
     { 
      "Product_Title": "Cloth", 
      "Product_Description": "Here is cloth", 
      "Price": "100", 
      "Category_ID": "1" 
     }, 
     { 
      "Product_Title": "Cloth", 
      "Product_Description": "Here is cloth", 
      "Price": "100", 
      "Category_ID": "1" 
     } 
    ] 
} 

我知道PHP有一個內置的json_decode功能,但是PHP文件中他們只顯示如何處理數組。

任何建議或幫助是非常讚賞

泰勒

+0

你可以這樣做:'$ json_decoded - > { '產品'} [0] - > { 'PRODUCT_TITLE'};'( http://codepad.org/g5Ogru5Z) – 2012-02-04 05:29:42

+0

@JaredFarrish:'$ json_decoded - > {'Product'}'不等於'$ json_decoded-> Product'嗎?編輯:是的http://codepad.org/fGzAZk7v,雖然我仍然喜歡關聯數組 – mpen 2012-02-04 06:03:43

+0

@Mark - 這是,這只是先前嘗試的遺物。 – 2012-02-04 06:40:23

回答

10

如果你打電話json_decode($data,true);,您的數據將是:

Array(
    "Product"=>Array(
     Array(
      "Product_Title"=>"Cloth", 
      "Product_Description"=>"Here is cloth", 
      "Price"=>"100", 
      "Category_ID"=>"1" 
     ), 
     Array(
............. 
     ) 
    ) 
); 

有什麼不好呢?

+0

這似乎對我來說是最好的謝謝 – TaylorMac 2012-02-16 05:18:37

5

如果要保留stdClass對象,則需要使用對象屬性語法。

<?php 

$json = '{ 
    "Product": [ 
     { 
      "Product_Title": "Cloth", 
      "Product_Description": "Here is cloth", 
      "Price": "100", 
      "Category_ID": "1" 
     }, 
     { 
      "Product_Title": "Cloth", 
      "Product_Description": "Here is cloth", 
      "Price": "100", 
      "Category_ID": "1" 
     }, 
     { 
      "Product_Title": "Cloth", 
      "Product_Description": "Here is cloth", 
      "Price": "100", 
      "Category_ID": "1" 
     } 
    ] 
} 
'; 

$json_decoded = json_decode($json); 

// Note, it's usually a bad idea to use use count() like this; 
// cache the count before the for() in a variable and use that. 
// This is for demo purposes only. :) 
for ($i = 0; $i < count($json_decoded->{'Product'}); $i++) { 
    echo "Products: 
" . $json_decoded->{'Product'}[$i]->{'Product_Title'} . " 
" . $json_decoded->{'Product'}[$i]->{'Product_Description'} . " 
" . $json_decoded->{'Product'}[$i]->{'Price'} . " 
" . $json_decoded->{'Product'}[$i]->{'Category_ID'} . " 

"; 
} 

?> 

輸出:

Products: 
Cloth 
Here is cloth 
100 
1 

Products: 
Cloth 
Here is cloth 
100 
1 

Products: 
Cloth 
Here is cloth 
100 
1 

http://codepad.org/JxYAO5De

+0

大聲笑,我可以指出諷刺他說:「//注意,像這樣使用use count()通常是個不錯的主意......當實際做到這一點時,正確的方式會更容易。我發現自己在編輯中做了很多事情,因爲人們爲了簡單,簡潔或演示的目的而愚蠢地低估了快捷方式。 – chacham15 2013-04-24 21:00:44

+0

或者......這是一個展示如何不這樣做的機會*通常*並主動說*說*不要這樣做。有些人會看到*更好的方式(通常),並仍然回到* easy *的方式。 – 2013-04-24 21:13:35