Kemo Kemo - 9 months ago 48
JSON Question

Combining JSON tables from server in Android

I am a beginner coder and I am learning Android from Ravi's tutorials. Currently, I am trying to combine two tutorials - login/register and listview (I put the two links here so I don't have to post a bunch of code).

I am making an app where user registers and he is able to add a movie. The added movie is saved on the server. I made an activity similar to the register activity and it enables user to add a movie with the following info:

JSONObject movie= jObj.getJSONObject("movie");
String id = movie.getString("id");
String userId = movie.getString("user_id"); // this is the current user's id
String title = movie.getString("title");
String genre = movie.getString("genre");
String year = movie.getString("year");

And my php class for adding a movie:

require_once 'include/DB_Functions.php';
$db = new DB_Functions();

// json response array
$response = array("error" => FALSE);

if (isset($_POST['user_id']) && isset($_POST['title']) && isset($_POST['genre']) && isset($_POST['year'])) {

// receiving the post params
$user_id = $_POST['user_id'];
$title = $_POST['title'];
$genre = $_POST['genre'];
$year = $_POST['year'];

// create a new movie
$movie = $db->storeMovie($user_id, $title, $genre, $year);
if ($movie) {
// movie stored successfully
$response["error"] = FALSE;
$response["movie"]["id"] = $movie["id"];
$response["movie"]["user_id"] = $movie["user_id"];
$response["movie"]["title"] = $movie["title"];
$response["movie"]["genre"] = $movie["genre"];
$response["movie"]["year"] = $movie["year"];
$response["movie"]["created_datetime"] = $movie["created_datetime"];
echo json_encode($response);
} else {
// movie failed to store
$response["error"] = TRUE;
$response["error_msg"] = "Unknown error occurred in movie creation!";
echo json_encode($response);

} else {
$response["error"] = TRUE;
$response["error_msg"] = "Some of the required parameters are missing!";
echo json_encode($response);

Now I want to return the added movie, but I also want to return the name of the user who added the movie instead of the user_id. What is the best way to do this if I only have the user_id from the stored_user table?


You need to run another query on stored_user table for getting user's info related to user_id and assign that object to the user object in your response. It will automatically get encoded into json as follows

  "id": "2",
  "title": "xyz",
  "genre": "abc",
  "year": "2006",
  "user": {
    "id": "4",
    "name": "User's name",
    "email": "User's email"