从Java调用PHP中的Json格式化问题

时间:2017-02-20 09:29:41

标签: java php json

我在Java中调用mysql数据如下:

JSONObject jo = new JSONObject(result).getJSONArray("server_response").getJSONObject(0);
                if (jo.getString("success").equals("1"))
....

PHP:

   $dbhost = 'localhost';
   $dbuser = 'xxxx';
   $dbpass = 'xxxx';
      $conn =  mysqli_connect($dbhost, $dbuser, $dbpass,'test_db');

   if(! $conn ) {
          $response["success"] = 0;
        $response["message"] = "No connection.";
         header('Content-type: application/json');
   echo json_encode(array("server_response"=>$response));
        exit;
   }

   $sql = "Select * from employee ".
      "where 1=1 ";


  // array for JSON response
$response = array();    
   $retval = mysqli_query($conn,$sql );

   if(! $retval ) {

         $response["success"] = 0;
        $response["message"] = "User not found.";
   }
   else{       

        $response["success"] = 1;
        $response["message"] = "User has been found.";

        // echoing JSON response


   }
   header('Content-type: application/json');
   echo json_encode(array("server_response"=>$response));

在浏览器中获得结果:

  

{“server_response”:{“成功”:1,“消息”:“已找到用户。”}}

但在我看来,没有得到正确的json格式的值,Java可以解释,因此代码不会进一步执行。

2 个答案:

答案 0 :(得分:0)

将PHP文件的最后一行修改为:

echo json_encode(array("server_response"=>array($response)));

答案 1 :(得分:-1)

我不确定但是,在服务器响应中,带有“消息”的字符串是用括号“”写的。但是“成功”没有括号,也许Java认为它是一个int,当你试图比较一个String(“1”)它返回false。