冒着重复的风险,这是我自己与json_decode()的斗争。我已经通过了很多(如果不是全部)这个帖子并没有任何效果。所以这里:
以下是我的json变量内容的示例:
{"id":"212","game":"36","player":"1","currentChallenge":"3","startDate":"1456575719","endDate":"1456575918","attempts":"0","completed":"1"}
我在http://jsonlint.com/上查了一下,这很好 我按照其他论坛建议运行这些过滤器:
$response = utf8_encode($response);
$response = str_replace('"', '"', $response);
这是我的解码线:
var_dump(json_decode($response, true));
我仍然得到NULL响应和语法错误(json_last_error())。
这些数据来自我自己的数据库和api。我尝试手动输入数据库并查询,确定我可以摆脱输入过程产生的任何问题。那里没有运气。我还对各种表进行了采样,以确保它不是与数据库设置相关的问题。
这是我的所有代码:
if (isset($_POST['submit']) ) {
$table = $_POST['table'];
$id = $_POST['id'];
$url = 'http://example.com/api.php/' . $table . '/' . $id;
$client = curl_init($url);
curl_setopt($client,CURLOPT_RETURNTRANSFER,true);
$response = curl_exec($client);
if ($response === false) {
$info = curl_getinfo($curl);
curl_close($curl);
die('error occured during curl exec. Additioanl info: ' . var_export($info));
}
$response = utf8_encode($response);
$response = str_replace('"', '"', $response);
echo $response;
echo '<br />Result of json_decode: ';
var_dump(json_decode($response, true));
$json_errors = array(
JSON_ERROR_NONE => 'No error has occurred',
JSON_ERROR_DEPTH => 'The maximum stack depth has been exceeded',
JSON_ERROR_CTRL_CHAR => 'Control character error, possibly incorrectly encoded',
JSON_ERROR_SYNTAX => 'Syntax error',
);
echo 'Last error : ', $json_errors[json_last_error()], PHP_EOL, PHP_EOL;
}
谢谢!