JSON с \ x26 в значениях разбивает PHPs json_decode - PullRequest
1 голос
/ 03 января 2012

https://www.googleapis.com/freebase/v1/search?query=madonna#

Результат JSON нарушает PHPs json_decode.Чтобы быть точным, следующая строка нарушает декодирование: "Sticky \ x26amp; Sweet Tour".

Однако браузеры, похоже, могут это понять: http://jsfiddle.net/nggX2/ & http://jsfiddle.net/QUVFt/

http://jsonlint.com/ утверждает, что это недопустимый JSON.

На стороне PHP я пробовал: http://codepad.viper -7.com / suUbQD и http://codepad.viper -7.com / QjqCH7

Есть мысли ов чем дело?

Ответы [ 2 ]

7 голосов
/ 03 января 2012

Что происходит, так это то, что это неверный JSON. Ответ на этот URL неверен - JSON не допускает двухзначные двоичные escape-последовательности \xXX, только escape-последовательности \uXXXX unicode code point. Здесь это должно быть просто &, хотя escape-последовательности не требуется.

Не знаю, почему Google / FreeBase выводит недопустимый JSON.

1 голос
/ 03 января 2012

Ваш JSON должен выглядеть следующим образом:

"Sticky \\x26amp; SweetTour"

Слеш должен быть экранирован, потому что это escape-код

...