Saya memiliki objek JSON ini yang disimpan pada file teks biasa:
{
"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"
}
}
Ketika saya mencoba untuk memecahkan kode dengan json_decode()
, itu mengembalikan NULL. Mengapa? File tersebut dapat dibaca (saya mencoba menggemakan file_get_contents()
dan berfungsi dengan baik).
Saya telah menguji JSON terhadap http://jsonlint.com/ dan itu sangat valid.
Ada apa disini?
Larutan
Mencari jawaban di Google, saya kembali ke SO: json_decode mengembalikan NULL setelah panggilan layanan web . File JSON saya memiliki urutan UTF BOM (beberapa karakter biner yang seharusnya tidak ada), dengan demikian, merusak struktur JSON. Pergi ke Hex Editor, menghapus byte. Semuanya kembali normal. Mengapa ini terjadi? Karena saya mengedit file menggunakan Notepad Microsoft Windows. Ide yang buruk!
json_last_error()
.