2014-07-11 35 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”值的键,你可以用[]取代{}。 在这种情况下,您将拥有一个数组可以通过其中的数组访问的数组。