PHP json_decode () возвращает ПУСТОЙ УКАЗАТЕЛЬ с допустимым JSON?

Мне сохранили этот объект JSON на файле простого текста:

{
    "MySQL": {
        "Server": "(server)",
        "Username": "(user)",
        "Password": "(pwd)",
        "DatabaseName": "(dbname)"
    },
    "Ftp": {
        "Server": "(server)",
        "Username": "(user)",
        "Password": "(pwd)",
        "RootFolder": "(rf)"
    },
    "BasePath": "../../bin/",
    "NotesAppPath": "notas",
    "SearchAppPath": "buscar",
    "BaseUrl": "http:\/\/montemaiztusitio.com.ar",
    "InitialExtensions": [
        "nem.mysqlhandler",
        "nem.string",
        "nem.colour",
        "nem.filesystem",
        "nem.rss",
        "nem.date",
        "nem.template",
        "nem.media",
        "nem.measuring",
        "nem.weather",
        "nem.currency"
    ],
    "MediaPath": "media",
    "MediaGalleriesTable": "journal_media_galleries",
    "MediaTable": "journal_media",
    "Journal": {
        "AllowedAdFileFormats": [
            "flv:1",
            "jpg:2",
            "gif:3",
            "png:4",
            "swf:5"
        ],
        "AdColumnId": "3",
        "RSSLinkFormat": "%DOMAIN%\/notas\/%YEAR%-%MONTH%-%DAY%\/%TITLE%/",
        "FrontendLayout": "Flat",
        "AdPath": "ad",
        "SiteTitle": "Monte Maíz: Tu Sitio",
        "GlobalSiteDescription": "Periódico local de Monte Maíz.",
        "MoreInfoAt": "Más información aquí, en el Periódico local de Monte Maíz.",
        "TemplatePath": "templates",
        "WeatherSource": "accuweather:SAM|AR|AR005|MONTE MAIZ",
        "WeatherMeasureType": "1",
        "CurrencySource": "cotizacion-monedas:Dolar|Euro|Real",
        "TimesSingular": "vez",
        "TimesPlural": "veces"
    }
}

Когда я пытаюсь декодировать его с json_decode(), это возвращает ПУСТОЙ УКАЗАТЕЛЬ. Почему? Файл читаем (я пытался отозваться эхом file_get_contents() и это работало хорошо).

Я протестировал JSON против http://jsonlint.com/, и это совершенно допустимо.

Что случилось здесь?

Решение

Ища ответы на Google, я возвратился к ТАК: json_decode возвращает ПУСТОЙ УКАЗАТЕЛЬ после вызова веб-сервиса. Мой файл JSON имел последовательность BOM UTF (некоторые двоичные символы, которые не должны быть там), таким образом, повреждая структуру JSON. Перешел к Hex-редактору, стер байты. Все вернулось к нормальному. Почему это произошло? Поскольку я отредактировал файл с помощью Блокнота Microsoft Windows. Ужасная идея!

97
задан Community 23 May 2017 в 12:02
поделиться

1 ответ

Это может быть кодировка специальных символов. Вы можете запросить json_last_error () , чтобы получить определенную информацию.

Обновление: проблема решена, посмотрите абзац «Решение» в вопросе.

63
ответ дан 24 November 2019 в 05:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: