2013-07-10 45 views
0

我有一個PHP腳本,用下面的輸出輸出text/json被解釋爲對象的JSON數據的一部分以及被解釋爲數組的類似部分:爲什麼?

{"labels":{"ftemp":"Full time employment only","ptemp":"Part time employment only","study":"Further study only","workstudy":"Work and Study","noavail":"Not available for work","noemp":"Unemployed","other":"Other","refusal":"Information Refused"},"employjobs":{"Cambridge Beds Co Ltd.":"Accounts Assistant","Chinese Company":"Accountant"}} 

格式化更漂亮,它看起來像這樣:

{ 
    "labels": 
    { 
     "ftemp":"Full time employment only", 
     "ptemp":"Part time employment only", 
     "study":"Further study only", 
     "workstudy":"Work and Study", 
     "noavail":"Not available for work", 
     "noemp":"Unemployed", 
     "other":"Other", 
     "refusal":"Information Refused" 
    }, 
    "employjobs": 
    { 
     "Cambridge Beds Co Ltd.":"Accounts Assistant", 
     "Chinese Company":"Accountant" 
    } 
} 

現在,對我來說這兩個「標籤」和「employjobs」看就像它們都是帶有鍵值對的json對象。但是,當我對腳本進行JQuery getJSON調用時,返回的數據對象中'labels'是一個對象,但'employjobs'是一個空數組。

我錯過了什麼? json字符串的兩個位的格式看起來相同,爲什麼一個被解釋爲一個對象而另一個是空數組?

任何幫助非常感謝收到,謝謝你提前。

UPDATE: 這裏的print_r在PHP腳本的數據輸出使其通過json_encode函數之前:

Array 
(
    [labels] => Array 
     (
      [ftemp] => Full time employment only 
      [ptemp] => Part time employment only 
      [study] => Further study only 
      [workstudy] => Work and Study 
      [noavail] => Not available for work 
      [noemp] => Unemployed 
      [other] => Other 
      [refusal] => Information Refused 
     ) 

    [employjobs] => Array 
     (
      [Cambridge Beds Co Ltd.] => Accounts Assistant 
      [Chinese Company] => Accountant 
     ) 

) 

正如你所看到的,「標籤」和「employjobs」是鍵值對數組,這反映在PHP腳本輸出的JSON字符串中。

+0

曾嘗試在控制檯中查看JSON對象? – Mehdiway

+0

是的,這就是我用來檢查對象。 – Jonah

+0

下面是從控制檯中的WebKit檢查器的輸出: '對象{標籤:對象,employjobs:數組[0]} employjobs:數組[0] 長度:0 __proto__:數組[0] 標籤:對象 ftemp:「全職就業只有」 noavail:「不適用於工作」 noemp:「失業」 其他:「其他」 PTEMP:「兼職就業只有」 拒絕:「信息拒絕」 研究:「進一步只研究「 workstudy:」工作與學習「 __proto__:對象 __proto__:對象' – Jonah

回答

1

employjobs在某些情況下可能是空的。如果它永遠不應該是空的,你需要考慮這一點。如果它是空的,php默認會省略JSON的空數組語法。如果這是不可取的(即你想要一個空的對象),你可以使用json_encodeJSON_FORCE_OBJECT選項:

echo json_encode($data, JSON_FORCE_OBJECT); 

這將被省略

'{"labels": "object with various values", "employjobs": {}}' 
+0

謝謝 - 這使得jobsjobs成爲一個對象。現在我只需要弄清楚爲什麼對象是空的,儘管JSON字符串有兩個條目,當我在瀏覽器中打開php腳本。非常感謝您的幫助。 – Jonah

相關問題