您好我想在php中读取json数据。我创建了我的服务,但这里有一个问题,我的预期字符串没有显示在我的网页中。然后我创建测试服务比服务之前有点容易。没有改变。
预期结果是:"会话不是空的"
成立的结果是:" {"
我的服务:
$service = $_GET['service'];
switch($service)
{
case "create_ktt": saveInfo(); break;
case "create_user": createUser(); break;
case "login_user": loginUser(); break;
case "logout_user": logoffUser(); break;
case "get_session": getSession(); break;
case "get_report": getReport(); break;
case "test_json":
header('Content-type: application/json');
echo json_encode('{"session_code":"1","message":"Session is Not Null"}');
break;
default:
sendError(2);
break;
}
我的阅读区域:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, 'http://e-trafik.esy.es/external_services.php?service=test_json');
curl_setopt($curl, CURLOPT_TIMEOUT, 15);
curl_setopt($curl, CURLOPT_VERBOSE, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($curl, CURLOPT_FAILONERROR, 0);
$result_json = curl_exec($curl);
$decodeislemi = json_decode($result_json);
$mesaj = $decodeislemi[message];
echo $mesaj;
&GT;
PS:我改变了我的$ mesaj = $ decodeislemi [message]; line to $ mesaj = $ decodeislemi-&gt; message;没有改变。
答案 0 :(得分:1)
看起来您正在尝试构建自己的JSON字符串然后对其进行编码?尝试使用数组:
echo json_encode(["session_code"=>"1","message"=>"Session is Not Null"]);
或者我想你可以自己构建它(不推荐)并回复它:
echo '{"session_code":"1","message":"Session is Not Null"}';
答案 1 :(得分:0)
在JSON验证程序中测试服务的URL会显示您的JSON无效。
问题在于您对JSON进行了双重编码。正如AbraCadaver建议你应该将一系列key:值传递给json_encode()
,或者返回你的字符串(不使用json_encode
),但不能同时返回两者。
以下是比较:
您的服务目前正在退回:
"{\"session_code\":\"1\",\"message\":\"Session is Not Null\"}"
您的服务应该返回:
{"session_code":"1","message":"Session is Not Null"}
要解决此问题,您需要将其替换为:
echo json_encode('{"session_code":"1","message":"Session is Not Null"}');
使用其中任何一个
echo json_encode(["session_code"=>"1","message"=>"Session is Not Null"]);
echo '{"session_code":"1","message":"Session is Not Null"}';