[解決済み] PHP の json_decode() は、有効な JSON で NULL を返しますか?
2022-01-28 01:04:12
質問
この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/ で、完全に有効です。
ここで何が問題なのか?
更新(2010年問題への有効な対応)
Googleで答えを探していたら、SOに戻りました。 ウェブサービス呼び出し後、json_decode が NULL を返す . 私のJSONファイルには、UTF BOMシーケンス(あるはずのないバイナリ文字)があり、そのためJSON構造が壊れていました。Hex Editorで、そのバイトを消しました。すべてが正常に戻りました。 なぜこのようなことが起こったのでしょうか? Microsoft Windowsのメモ帳で編集したため。 恐るべし!
解決方法は?
特殊文字のエンコーディングが原因かもしれません。次のような質問をすることができます。 json_last_error() をクリックすると、確実な情報を得ることができます。
<ブロッククオート更新: 問題は解決されました。
関連
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: パラメータが定義されていません
-
[解決済み] PHP product.php?id=1 のような URL を作成する方法
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] PHPでユーザー入力をサニタイズするにはどうすればよいですか?
-
[解決済み] UnixツールでJSONをパースする
-
[解決済み] PHPスクリプトからJSONを返す
-
[解決済み] Python RequestsでJSONデータをPOSTする方法とは?
-
[解決済み] PHPでJSONをプリティープリントする
-
[解決済み] JavaScriptでTry/Catchを使わずに有効なJSON文字列かどうかをチェックする方法
-
[解決済み] JSONでnullを表現する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Weird PHP error: 'Can't use function return value in write context'.
-
[解決済み】mysqli_result クラスのオブジェクトを文字列に変換できない
-
[解決済み】メンバ関数をnullで呼び出す?
-
[解決済み] php5パッケージのインストール候補がない (Ubuntu 16.04)
-
[解決済み】 $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて]
-
[解決済み】Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING エラーが発生しました。
-
[解決済み】phpMyAdmin: シークレットパスフレーズ?
-
[解決済み] PHP - ストリームを開くのに失敗しました : そのようなファイルまたはディレクトリがありません。
-
[解決済み] Uncaught Error: 未定義の関数 mysql_escape_string() の呼び出し。
-
[解決済み] $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて