Pracuję nad aplikacją, w której używam Reszta API do wymiany danych.My skrypty back-end są w PHP, w jednym z mojego modułu wysyłam jako odpowiedź JSON od Back-End do Android Client i pobieram go na Androida stronie Używanie modernizacji z adnotacji @Get.

Poniżej znajduje się mój JSON, który chcę zaakceptować.

[
    [
        {
            "column_name": "email"
        },
        {
            "column_name": "product_code"
        }
    ],
    [
        {
            "column_value": "ht@t.com"
        },
        {
            "column_value": "BBAN0003"
        }
   ]
]    

poniżej jest mój interfejs modernizacji,

@GET("testing/getProductdetails.php") 
Call<JSONArray> getColumnNames(@Query("email") String email);

Błąd, który dostałem, jest

Oczekiwany obiekt rozpocznij, ale był zaczniesz tablicą

mój kod końcowy pHP

<?php 

 /*
 * Created by Belal Khan
 * website: www.simplifiedcoding.net 
 * Retrieve Data From MySQL Database in Android
 */

 //database constants
 define('DB_HOST', 'localhost');
 define('DB_USER', 'id6935081_pksinghhps');
 define('DB_PASS', 'kingmessi10');
 define('DB_NAME', 'id6935081_users');

 //connecting to database and getting the connection object
 $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

 //Checking if any error occured while connecting
 if (mysqli_connect_errno()) {
 echo "Failed to connect to MySQL: " . mysqli_connect_error();
 die();
 }
 if(isset($_GET['email']))
{
     $email=$_GET["email"];

 $sql = "SHOW COLUMNS from product_details";
if (($result = $conn->query($sql)) == true) {
    while ($row = $result->fetch_array()) {
        $sub[] = $row[0];


    }
}
      $column_value = array();

      $sql2 = "SELECT * FROM product_details WHERE email = '".$email."' ";
       if (($result2 = $conn->query($sql2)) == true) {
           while($row2 = $result2->fetch_array()){
          for($j=0;$j<sizeof($sub);$j++){
           $sub2 = array();    
           $sub2["column_value"] = $row2[$j];
           array_push($column_value,$sub2);
          }

       }
       }

       else echo "NO";


 $events = array(); 
 $k=0;
 while($k<sizeof($sub)){
     $temp = array();
     $temp['column_name']= $sub[$k];
     array_push($events, $temp);
     $k++;

 }


     $main = array();
     array_push($main,$events);
     array_push($main,$column_value);
     echo json_encode($main);


}
?>
0
prashant kumar singh 20 luty 2019, 12:05

1 odpowiedź

Jednostka do przechowywania rzeczywistych danych:

class JsonColumnNameHolder {
    @SerializedName("column_name")
    private final String myField;
    @SerializedName("column_value")
    private final String myField2;

    public JsonColumnNameHolder(String myField, String myField2) {
        this.myField = myField;
        this.myField2 = myField2;
    }

    public String getName() {
        return myField;
    }

    public String getValue() {
        return myField2;
    }
}

Retrofit Signature:

@GET("testing/getProductdetails.php") 
Single<List<List<JsonColumnNameHolder>>> getColumnNames(@Query("email") String email);
0
marc_s 18 marzec 2019, 21:58