PHP没有解析我的json输出

时间:2014-05-12 20:18:05

标签: php json

您好我想在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;没有改变。

2 个答案:

答案 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无效。

http://jsonlint.com/

问题在于您对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"}';