2013-07-03 194 views
0

我试图将此php数组转换为JSON,但生成的JSON不正确,它具有一些不存在的字段null。将php数组转换为json出错

Array 
(
    [0] => Array 
     (
      [sala] => ‡ Cinemark 1 - Capacidade 318 pessoas 
      [filmes] => Array 
       (
        [0] => Array 
         (
          [titulo] => 1,0: Minha Mãe é uma Peça 
          [tempo] => 2,1: Duração : 85 minutos 
          [genero] => 3,2: Comédia - Censura : 12 anos 
          [horarios] => 4,3: 11:20; 13:50; 16:20; 18:50; 21:00 
         ) 

       ) 

     ) 

    [1] => Array 
     (
      [sala] => ‡ Cinemark 2 - Capacidade 235 pessoas 
      [filmes] => Array 
       (
        [0] => Array 
         (
          [titulo] => 1,4: Guerra Mundial Z 
          [tempo] => 2,5: Legendado - Duração : 116 minutos 
          [genero] => 3,6: Ficção Científica - Censura : 12 anos 
          [horarios] => 4,7: 11:30; 14:10; 16:50; 19:30; 22:20 
         ) 

       ) 

     ) 

    [2] => Array 
     (
      [sala] => ‡ Cinemark 3 - Capacidade 235 pessoas 
      [filmes] => Array 
       (
        [0] => Array 
         (
          [titulo] => 1,8: Minha Mãe é uma Peça 
          [tempo] => 2,9: Duração : 85 minutos 
          [genero] => 3,10: Comédia - Censura : 12 anos 
          [horarios] => 4,11: 12:50; 17:30; 20:00; 22:30 
         ) 

        [1] => Array 
         (
          [titulo] => 1,12: Odeio o Dia dos Namorados 
          [tempo] => 2,13: Duração : 101 min 
          [genero] => 3,14: Comédia - Censura : 14 anos 
          [horarios] => 4,15: 15:00 
         ) 

       ) 

     ) 

    [3] => Array 
     (
      [sala] => ‡ Cinemark 4 - Capacidade 372 pessoas 
      [filmes] => Array 
       (
        [0] => Array 
         (
          [titulo] => 1,16: Universidade Monstros 
          [tempo] => 2,17: Dublado - Duração : 110 minutos 
          [genero] => 3,18: Animação - Censura : Livre 
          [horarios] => 4,19: 13:00; 15:30; 18:00 | Sessão em 3D 
         ) 

        [1] => Array 
         (
          [titulo] => 1,20: Se Beber, Não Case III 
          [tempo] => 2,21: Legendado - Duração : 100 min 
          [genero] => 3,22: Comédia - Censura : 14 anos 
          [horarios] => 4,23: 20:30 
         ) 

       ) 

     ) 

    [4] => Array 
     (
      [sala] => ‡ Cinemark 5 - Sala XD - Capacidade 372 pessoas 
      [filmes] => Array 
       (
        [0] => Array 
         (
          [titulo] => 1,24: Guerra Mundial Z 
          [tempo] => 2,25: Dublado - Duração : 116 minutos 
          [genero] => 3,26: Ficção Científica - Censura : 12 anos 
          [horarios] => 4,27: 13:10; 15:50*; 18:30; 21:10* | Sessão em 3D *Legendado 
         ) 

       ) 

     ) 

    [5] => Array 
     (
      [sala] => ‡ Cinemark 6 - Capacidade 235 pessoas 
      [filmes] => Array 
       (
        [0] => Array 
         (
          [titulo] => 1,28: Todo Mundo Em Pânico 5 
          [tempo] => 2,29: Dublado - Duração : 89 minutos 
          [genero] => 3,30: Comédia - Censura : 14 anos 
          [horarios] => 4,31: 12:10; 16:40; 21:50 
         ) 

        [1] => Array 
         (
          [titulo] => 1,32: Os Amantes Passageiros 
          [tempo] => 2,33: Legendado - Duração : 91 minutos 
          [genero] => 3,34: Comédia - Censura : 16 anos 
          [horarios] => 4,35: 14:20; 19:20 
         ) 

       ) 

     ) 

    [6] => Array 
     (
      [sala] => ‡ Cinemark 7 - Capacidade 235 pessoas 
      [filmes] => Array 
       (
        [0] => Array 
         (
          [titulo] => 1,36: Universidade Monstros 
          [tempo] => 2,37: Dublado - Duração : 110 minutos 
          [genero] => 3,38: Animação - Censura : Livre 
          [horarios] => 4,39: 12:00; 14:30; 17:10; 19:40 
         ) 

       ) 

     ) 

    [7] => Array 
     (
      [sala] => ‡ Cinemark 8 - Capacidade 297 pessoas 
      [filmes] => Array 
       (
        [0] => Array 
         (
          [titulo] => 1,40: Todo Mundo Em Pânico 5 
          [tempo] => 2,41: Legendado - Duração : 89 minutos 
          [genero] => 3,42: Comédia - Censura : 14 anos 
          [horarios] => 4,43: 11:10; 13:20; 15:40; 18:20; 20:50 
         ) 

       ) 

     ) 

) 

,这是JSON产生:

[{"sala":"‡ Cinemark 1 - Capacidade 318 pessoas","filmes":[{"titulo":null,"tempo":null,"genero":null,"horarios":"11:20; 13:50; 16:20; 18:50; 21:00"}]},{"sala":"‡ Cinemark 2 - Capacidade 235 pessoas","filmes":[{"titulo":"Guerra Mundial Z","tempo":null,"genero":null,"horarios":"11:30; 14:10; 16:50; 19:30; 22:20"}]},{"sala":"‡ Cinemark 3 - Capacidade 235 pessoas","filmes":[{"titulo":null,"tempo":null,"genero":null,"horarios":"12:50; 17:30; 20:00; 22:30"},{"titulo":"Odeio o Dia dos Namorados","tempo":null,"genero":null,"horarios":"15:00"}]},{"sala":"‡ Cinemark 4 - Capacidade 372 pessoas","filmes":[{"titulo":"Universidade Monstros","tempo":null,"genero":null,"horarios":null},{"titulo":null,"tempo":null,"genero":null,"horarios":"20:30"}]},{"sala":"‡ Cinemark 5 - Sala XD - Capacidade 372 pessoas","filmes":[{"titulo":"Guerra Mundial Z","tempo":null,"genero":null,"horarios":null}]},{"sala":"‡ Cinemark 6 - Capacidade 235 pessoas","filmes":[{"titulo":null,"tempo":null,"genero":null,"horarios":"12:10; 16:40; 21:50"},{"titulo":"Os Amantes Passageiros","tempo":null,"genero":null,"horarios":"14:20; 19:20"}]},{"sala":"‡ Cinemark 7 - Capacidade 235 pessoas","filmes":[{"titulo":"Universidade Monstros","tempo":null,"genero":null,"horarios":"12:00; 14:30; 17:10; 19:40"}]},{"sala":"‡ Cinemark 8 - Capacidade 297 pessoas","filmes":[{"titulo":null,"tempo":null,"genero":null,"horarios":"11:10; 13:20; 15:40; 18:20; 20:50"}]}] 

我能是做错了什么?我正在使用php的json_encode()。

+0

谢谢,这个问题是UTF-8编码 –

回答

1

尝试json_encode()的参数一样

json_encode($a, JSON_UNESCAPED_UNICODE); 

在这里看到手册:json_encode

1

我建议您验证您的JSON去这里:http://jsonlint.com/

+0

我不明白,因为当我用json_encode()转换一个简单的php数组时,一切都很顺利。但是这与数组内的数组发生错误。 –

+1

也许是因为像这样的一些字符串“Mãeé”更好地检查马里奥的链接 –

+0

谢谢,你是对的,问题是在UTF-8。在创建数组之前,我在php中使用了utf8_encode(),它工作正常。 –