首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在php中解码JSON文件

无法在php中解码JSON文件
EN

Stack Overflow用户
提问于 2018-08-04 16:21:13
回答 1查看 134关注 0票数 0

我尝试将PHP中的JSON解码为数组。这是我的代码

代码语言:javascript
复制
<?php
$url="file/game.json";
$result_file=file_get_contents($url);
    if(!$result_file){ echo 'result_file......Failed'; }
$php_result=json_decode($result_file,true);
print_r($php_result);

if($php_result){

    echo 'ok';
}
else{

    echo 'error';
}
?>

这是我的json文件

代码语言:javascript
复制
[
  {
    "name": "ABCD",
    "price": "24.36",
    "platform": "<span class=\"platform battle-net\"></span>",
    "region": "GLOBAL"
  },
  {
    "name": "ABCD",
    "price": "27.60",
    "platform": "<span class=\"platform xbox-live\"></span>",
    "region": "GLOBAL"
  }
]

我的结果是“错误”。我不知道如何解决这个问题。

我该怎么办呢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-04 16:45:13

失败时,file_get_contents函数将整个文件返回为字符串或FALSE。所以我假设,这里你没有得到文件字符串。所以试着这样做,

代码语言:javascript
复制
<?php
try {
    $url="file/game.json";
    $result_file = file_get_contents('file/game.json');
    if ($result_file === false) {
        // Handle the error
        echo "ERROR";
    }else{
        $php_result=json_decode($result_file,true);

        switch (json_last_error()) {
            case JSON_ERROR_NONE:
            echo ' - OK';
            print_r($php_result);
            break;
            case JSON_ERROR_DEPTH:
            echo ' - Maximum stack depth exceeded';
            break;
            case JSON_ERROR_STATE_MISMATCH:
            echo ' - Underflow or the modes mismatch';
            break;
            case JSON_ERROR_CTRL_CHAR:
            echo ' - Unexpected control character found';
            break;
            case JSON_ERROR_SYNTAX:
            echo ' - Syntax error, malformed JSON';
            break;
            case JSON_ERROR_UTF8:
            echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
            break;
            default:
            echo ' - Unknown error';
            break;
        }
    }
} catch (Exception $e) {
    // Handle exception
    #echo $e->getMessage();
    #echo $e->code();
}
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51683788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档