2014-07-11 51 views
-2

我有一個JSON文件,名爲:openingstijden.json我的json文件有什麼故障?

{ 
    "openingstijden": { 
     "normaal": { 
      ["10.00", "18.00"], 
      ["8.00", "16.00"], 
      ["8.00", "18.00"], 
      ["8.00", "18.00"], 
      ["8.00", "18.00"], 
      ["8.00", "18.00"], 
      ["8.00", "18.00"] 
     }, 
     "speciaal": { 
      "2013-11-20": ["12.00", "20.00"] 
     } 
    } 
} 

但是,當我試圖讓這個陣列上的vardump

// path naar config file 
define('CONFIG_FILE', __DIR__.'/openingstijden.json'); 

$businessHours = json_decode(file_get_contents(CONFIG_FILE), true); 

var_dump($businessHours); 

我得到這樣的結果:NULL 還當我嘗試以foreach數組: 警告:爲foreach提供的無效參數()

你們知道我的json文件有什麼問題嗎?

在此先感謝!

+0

您的JSON無效。 – deceze

+1

你不能在這樣的對象中放置數組。你'normaal'應該是一個數組,而不是一個對象。 – Matt

+2

http://jsonlint.com/ – Quentin

回答

4

您的JSON字符串無效。有效JSON中的每個條目都必須有一個值。以["10.00", "18.00"],開頭的七行沒有密鑰,因爲"2013-11-20": ["12.00", "20.00"]

爲了使有效...

{ 
    "openingstijden": { 
     "normaal": { 
      "0": ["10.00", "18.00"], 
      "1": ["8.00", "16.00"], 
      "2": ["8.00", "18.00"], 
      "3": ["8.00", "18.00"], 
      "4": ["8.00", "18.00"], 
      "5": ["8.00", "18.00"], 
      "6": ["8.00", "18.00"] 
     }, 
     "speciaal": { 
      "2013-11-20": ["12.00", "20.00"] 
     } 
    } 
} 
+0

只是好奇,會不會排序未經排序的數組呢?你有什麼理由要讓他們成爲關鍵? – sheeptest

+1

@sheeptest JSON需要每個條目的一個鍵。您不必按順序排列,即「0」,「1」,「2」等,但這對於這種情況是合乎邏輯的。 – Mooseman

+0

:X謝謝你。當我將我的示例粘貼到[jsonlint](http://jsonlint.com)時,它恢復爲有效。 – sheeptest

0

如果你不想用你的「normaal」值的鍵,你可以用[]取代{}。 在這種情況下,您將擁有一個數組可以通過其中的數組訪問的數組。