मेरे पास यह 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()
, तो यह NULL को वापस कर देता है। क्यों? फ़ाइल पठनीय है (मैंने गूँजने की कोशिश की file_get_contents()
और यह ठीक काम किया)।
मैंने JSON को http://jsonlint.com/ के खिलाफ परीक्षण किया है और यह पूरी तरह से वैध है।
यहाँ क्या गलत है?
उपाय
Google पर उत्तरों की तलाश में, मैं SO पर वापस आ गया: json_decode webservice कॉल के बाद NULL देता है । मेरी JSON फ़ाइल में UTF BOM अनुक्रम (कुछ द्विआधारी वर्ण जो वहां नहीं होने चाहिए), इस प्रकार, JSON संरचना को तोड़ते हैं। हेक्स संपादक के पास गया, बाइट्स मिटा दिया। सब कुछ वापस सामान्य करने के लिए। ऐसा क्यों हुआ है? क्योंकि मैंने Microsoft Windows 'नोटपैड' का उपयोग करके फ़ाइल को संपादित किया। भयानक विचार!
json_last_error()
।