ホームページ > バックエンド開発 > PHPチュートリアル > 受信した JSON は解析できないため、php で解析する必要があります

受信した JSON は解析できないため、php で解析する必要があります

WBOY
リリース: 2016-06-23 14:39:43
オリジナル
837 人が閲覧しました

function sendPost($url,$postData){ $postdata = http_build_query($postData); $options = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-type:application/x-www-form-urlencoded', 'content' => $postdata, 'timeout' => 15 * 60 // 超时时间(单位:s)) ); $context = stream_context_create($options); $result = file_get_contents($url, false, $context); return $result; }$url = "http://chepiao.sinaapp.com/api.php?act=remain";$data = array( "date"=>"20131220", "startStation"=>"北京", "arriveStation"=>"天津");$result = sendPost($url, $data); $obj = json_decode($result);$result就是返回来的数据,就是解析不了,用json_decode($result);解析成的是NULL
ログイン後にコピー


ディスカッションに返信 (解決策)

誰かに分析を手伝ってもらいましょう

$result を印刷して結果を確認してください

とても良いです
gbk 環境で見てください
{"title":"北京 天津 ??0娆¤撇?","errMsg":"????ㄥ?甛??绋??????璇??" }
utf-8 環境を参照してください
{"title":"???? - ??

この投稿は、xuzuning によって 2013-12- に最後に投稿されました。 17 19: 19:36 編集

この種の文字セットの混乱は csdn でも受け入れられません
utf-8 環境で見ました

とても奇妙です
echo json_last_error(); 結果は 4、つまり形式が間違っています
そこで、返されたものを捨てました http://jsonlint.com/ 検出、エラー報告、改行の問題であることが判明しました
print_r(json_decode(str_replace("n"," ",$result)) );
結果は良好です


皆さん、json_last_error の使い方をまだ勉強していないので投稿しました。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート