JSON_decode破坏有效的JSON


JSON_decode trashes valid json

这是json(通过jsonlint.com验证)想要转换为数组:

    {  
   "header":{  
      "gtfs_realtime_version":"1.0",
      "incrementality":"FULL_DATASET",
      "timestamp":"1425644644"
   },
   "entity":{  
      "id":"54a2d01be4b035374130324a",
      "alert":{  
         "active_period":{  
            "start":"1418511600",
            "end":"1450047540"
         },
         "informed_entity":{  
            "agency_id":"BRER",
            "route_id":"BRER-623-3"
         },
         "cause":"OTHER_CAUSE",
         "effect":"OTHER_EFFECT",
         "header_text":{  
            "translation":{  
               "text":"Nachtzuschlag",
               "language":"de"
            }
         },
         "description_text":{  
            "translation":{  
               "text":"Zuschlagpflichtiges Nachtnetz ab 01h00. Bitte Nachtzuschlag am Automaten, beim Fahrpersonal oder per SMS (NZ an 988 zu CHF 5.-/SMS) lösen.",
               "language":"de"
            }
         }
      }
   },
   "entity":{  
      "id":"54e31129e4b025511c91cc41",
      "alert":{  
         "active_period":{  
            "start":"1424646000",
            "end":"1425657600"
         },
         "informed_entity":{  
            "agency_id":"PAG",
            "route_id":"PAG65-2004-3"
         },
         "cause":"OTHER_CAUSE",
         "effect":"OTHER_EFFECT",
         "header_text":{  
            "translation":{  
               "text":"Umleitung Linie 825",
               "language":"de"
            }
         },
         "description_text":{  
            "translation":{  
               "text":"Aufgrund Holzschlags wird  die Linie 825 ab Herdern bis Eschenz über Mammern umgeleitet. Dauer der Umleitung ist von 02.03.2015 bis 06.03.2015 um 16:30Uhr.",
               "language":"de"
            }
         }
      }
   },
   "entity":{  
      "id":"533ac08ae4b06c7674efd2b2",
      "alert":{  
         "active_period":{  
            "start":"1396382400",
            "end":"1449885600"
         },
         "informed_entity":{  
            "agency_id":"VBSG",
            "route_id":"VBSG117"
         },
         "informed_entity":{  
            "agency_id":"VBSG",
            "route_id":"VBSG116"
         },
         "cause":"OTHER_CAUSE",
         "effect":"OTHER_EFFECT",
         "header_text":{  
            "translation":{  
               "text":"Nachtzuschlag",
               "language":"de"
            }
         },
         "description_text":{  
            "translation":{  
               "text":"Bitte für alle Verkehrsmittel, welche fahrplanmässig nach 01.00 Uhr verkehren, einen Nachtzuschlag von fünf Franken lösen.",
               "language":"de"
            }
         }
      }
   },
   "entity":{  
      "id":"54ec7ea0e4b035374130379d",
      "alert":{  
         "active_period":{  
            "start":"1425355200",
            "end":"1430503200"
         },
         "informed_entity":{  
            "agency_id":"RTB",
            "route_id":"RTB-412-3"
         },
         "cause":"OTHER_CAUSE",
         "effect":"OTHER_EFFECT",
         "header_text":{  
            "translation":{  
               "text":"Umleitung Linie 412",
               "language":"de"
            }
         },
         "description_text":{  
            "translation":{  
               "text":"Aufgrund Bauarbeiten wird  Linie 412 umgeleitet. Die Haltestelle Grabserberg, Rogghalm wird während der Bauphase nicht bedient.",
               "language":"de"
            }
         }
      }
   }
}

当用jsondecode(…,true)解析时,我得到的返回结果是:

Array
(
    [header] => Array
        (
            [gtfs_realtime_version] => 1.0
            [incrementality] => FULL_DATASET
            [timestamp] => 1425644644
        )
    [entity] => Array
        (
            [id] => 54ec7ea0e4b035374130379d
            [alert] => Array
                (
                    [active_period] => Array
                        (
                            [start] => 1425355200
                            [end] => 1430503200
                        )
                    [informed_entity] => Array
                        (
                            [agency_id] => RTB
                            [route_id] => RTB-412-3
                        )
                    [cause] => OTHER_CAUSE
                    [effect] => OTHER_EFFECT
                    [header_text] => Array
                        (
                            [translation] => Array
                                (
                                    [text] => Umleitung Linie 412
                                    [language] => de
                                )
                        )
                    [description_text] => Array
                        (
                            [translation] => Array
                                (
                                    [text] => Aufgrund Bauarbeiten wird  Linie 412 umgeleitet. Die Haltestelle Grabserberg, Rogghalm wird während der Bauphase nicht bedient.
                                    [language] => de
                                )
                        )
                )
        )
)

如何防止json_decode破坏大部分数据?

您无法实现这一点,因为在JSON对象中,键名称不应重复。

您有多次events密钥复制。就PHP而言,它是可以的,但在JSON中它是无效的。

看看http://wiki.solarium-project.org/index.php/V2:BufferedAdd_plugin