【问题标题】:Combining JSON tables from server in Android在 Android 中组合来自服务器的 JSON 表
【发布时间】:2016-09-05 11:23:30
【问题描述】:

我是一名初学者,我正在向 Ravi 的 tutorials 学习 Android。目前,我正在尝试合并两个教程 - login/registerlistview我将两个链接放在这里,所以我不必发布一堆代码)。

我正在制作一个用户注册的应用程序,他可以添加电影。添加的电影保存在服务器上。我做了一个类似于注册活动的活动,它使用户能够添加具有以下信息的电影:

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"); 

还有我用于添加电影的 php 类:

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);
}
?>

现在我想返回添加的电影,但我还想返回添加电影的用户的名称 而不是 user_id。如果我只有 stored_user 表中的 user_id,最好的方法是什么?

【问题讨论】:

    标签: java php android json server


    【解决方案1】:

    您需要在stored_user 表上运行另一个查询以获取与user_id 相关的用户信息,并将该对象分配给您响应中的user 对象。它将自动编码为json,如下所示

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

    【讨论】:

    • this 之类的教程中获取信息的查询应该是什么样的?
    • @Kemo 你可以写这样的函数public function getUserById($id) { $stmt = $this->conn->prepare("SELECT * FROM users WHERE id = ?"); $stmt->bind_param("s", $email); if ($stmt->execute()) { $user = $stmt->get_result()->fetch_assoc(); $stmt->close(); return $user; } else { return NULL; } }
    • 还有一个问题 - 这段代码应该让 // Movies json url private static final String url = "http://api.androidhive.info/json/movies.json"; private ProgressDialog pDialog; private List<Movie> movieList = new ArrayList<Movie>(); private ListView listView; private CustomListAdapter adapter; 在我的 MoviesActivity 中工作吗?不用加http://api.androidhive.info/json/stored_user.json
    • @Kemo 获取电影列表需要获取 http://api.androidhive.info/json/movies.json 获取用户信息需要获取 http://api.androidhive.info/json/stored_user.json url
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    相关资源
    最近更新 更多