首页 > 解决方案 > 在一个 PHP 中,android 尝试发送多个 json 格式,但只接收到一个。我应该怎么办?

问题描述

在一个 PHP 中,android 尝试发送多个 json 格式,但只接收到一个。我应该怎么办?

Response.Listener<String> responseListener = new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                try {
                    Log.d("GGGG","onResponse start");
                    JSONObject jsonResponse = new JSONObject(response);
                    Log.d("GGGG","test" );
                    JSONArray jsonArray = jsonResponse.getJSONArray("Search");
                    Log.d("GGGG","test1" );
                    JSONArray jsonArray2 = jsonResponse.getJSONArray("Favorite");
                    Log.d("GGGG","test2" );

对 Logcat.d 的日志输出到“test1”并且不输出。我认为我们没有从 'getJSONArray ("Favorite") 中得到值。我应该怎么办?

//-------PHP------//

$userID =$_POST["userId"];
   $keyWord = $_POST["keyWord"];

    //  $keyWord = "na";
    //  $userID ="test";
    //데이터베이스에 값을 넣는부분

      $statement ="SELECT * from music where music_title like '%$keyWord%' or music_singer like '%$keyWord%'";

    //    echo $statement;
    //      exit;
      $result = mysqli_query($con,$statement);
      $resultArray = array();

        while($rows=mysqli_fetch_assoc($result)){
          $resultArray[]=$rows;

        }
      $statement ="SELECT * from favorite_playlist WHERE user_id ='$userID'";

      $result = mysqli_query($con,$statement);
      $resultArray2 = array();
      while($rows=mysqli_fetch_assoc($result)){
        $resultArray2[]=$rows;

      }

      //$response["success"] = true;//success라는 인덱스에 true값을 넣어줌

      header('Content-Type: application/json; charset=utf8');
      $json =  json_encode(array("Search"=>$resultArray), JSON_PRETTY_PRINT+JSON_UNESCAPED_UNICODE);
      $json2 = json_encode(array("Favorite"=>$resultArray2), JSON_PRETTY_PRINT+JSON_UNESCAPED_UNICODE);
      //echo json_encode($resultArray);//JSON형식으로 출력
      echo $json;
      echo $json2;

下面是php结果。

--------PHP示例结果-----

{
    "Search": [
        {
            "music_id": "1",
            "music_title": "나빠(NAPPA)",
            "music_singer": "Crush",
            "music_img": "https:\/\/wallkpop.com\/wp-content\/uploads\/2019\/08\/%EB%82%98%EB%B9%A0NAPPA-2.jpg"
        }
    ]
}{
    "Favorite": [
        {
            "user_id": "test",
            "music_id": "3",
            "play_time": "2019-09-05 09:35:21"
        },
        {
            "user_id": "test",
            "music_id": "4",
            "play_time": "2019-09-05 09:36:20"
        },
        {
            "user_id": "test",
            "music_id": "5",
            "play_time": "2019-09-05 13:02:34"
        },
        {
            "user_id": "test",
            "music_id": "2",
            "play_time": "2019-09-05 13:02:36"
        }
    ]
}

标签: javaphpandroid

解决方案


只能接收一个响应字符串(JSON 或 XML 编码)。你有两个选择:

  1. 将它们分成两个不同的 Api 路由
  2. 将它们合并为一个 JSON 字符串

在你的情况下,我会选择第一个选项。


推荐阅读