【问题标题】:transform a php array into json is going wrong [duplicate]将php数组转换为json会出错[重复]
【发布时间】:2013-06-30 13:14:40
【问题描述】:

我正在尝试将这个 php 数组转换为 JSON,但生成的 JSON 不正确,它有一些字段 null 不存在。

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()。

【问题讨论】:

  • 谢谢,问题出在 UTF-8 编码中

标签: php arrays json converter


【解决方案1】:

尝试使用类似参数的 json_encode()

json_encode($a, JSON_UNESCAPED_UNICODE);

在此处查看手册:json_encode

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我不明白,因为当我用 json_encode() 转换一个简单的 php 数组时,一切都很顺利。但这与数组中的数组给出了错误。
    • 可能是因为像“Mãe é”这样的字符串,最好检查一下马里奥的链接
    • 谢谢,你是对的,问题出在 UTF-8 中。在创建数组之前,我在 php 中使用了 utf8_encode() 并且它有效。
    猜你喜欢
    • 2014-07-11
    • 1970-01-01
    • 2014-06-11
    • 2012-02-08
    • 2021-03-22
    • 1970-01-01
    • 2018-12-17
    • 2020-08-06
    • 2017-09-06
    相关资源
    最近更新 更多