1

こんにちは私は新しいプログラマーであり、この出力をAndroidリストビューに解析しようとしています。mysqlに接続されているphpを使用してこの出力を生成しました。

{"id":"2","name":"Username : garrett","password":"Password : important"}{"id":"1","name":"Username : darrel","password":"Password : pass1234"}

これと同じトピックについて質問がたくさんあることは知っていますが、答えが見つからないようです。これが簡単な質問である場合は本当に申し訳ありません。前もって感謝します!

これが私のJavaコードで、現在、出力をtextViewに表示しています。ただし、最初のユーザーのみです。

import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.os.StrictMode;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import android.widget.TextView;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;


@TargetApi(Build.VERSION_CODES.GINGERBREAD)
public class Users extends Activity {
/** Called when the activity is first created. */

@TargetApi(Build.VERSION_CODES.GINGERBREAD)
@SuppressLint("NewApi")
@Override
 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    if (android.os.Build.VERSION.SDK_INT > 9) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);

    }
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://172.30.54.153/databases/");
    TextView textView = (TextView)findViewById(R.id.textView1);
    TextView textView2 = (TextView)findViewById(R.id.textView2);

  try {

   HttpResponse response = httpclient.execute(httppost);
   String jsonResult = inputStreamToString(response.getEntity().getContent()).toString();
   JSONObject object = new JSONObject(jsonResult);

   String name = object.getString("name");
  String password = object.getString("password");
  textView.setText(name + " - " + password);

  } 
  catch (JSONException e) {
   e.printStackTrace();
  } 
  catch (ClientProtocolException e) {
   e.printStackTrace();
  } 
  catch (IOException e) {
   e.printStackTrace();
  }


   }
private StringBuilder inputStreamToString(InputStream is) {
    String rLine = "";
    StringBuilder answer = new StringBuilder();
    BufferedReader rd = new BufferedReader(new InputStreamReader(is));

    try {
     while ((rLine = rd.readLine()) != null) {
      answer.append(rLine);
       }
    }

    catch (IOException e) {
        e.printStackTrace();
     }
    return answer;
   }
}

私のPHPコード。

 <?php 


 require 'connect.inc.php';

 $query = "SELECT `id` , `username`, `password` FROM `users` ORDER BY `id`";

 if ($query_run = mysql_query($query)) {

 while($query_row = mysql_fetch_assoc($query_run)) {
 $username = $query_row['username'];
 $password = $query_row ['password'];
 $id = $query_row ['id'];
 //echo $username .'`s password is : '. $password.'<br>';
 $data = array('id'=>$id , 'name'=> 'Username : '. $username ,'password'=>'Password : '.$password);
 print(json_encode($data));
 //print(json_encode($password));
 }


 }else{
 echo mysql_error();
 }

 ?>
4

2 に答える 2

1

php

$final_data = array();    
if ($query_run = mysql_query($query)) 
    { 
        $i=0;
        while($query_row = mysql_fetch_assoc($query_run)) 
        { 
            $username = $query_row['username']; 
            $password = $query_row ['password']; 
            $id = $query_row ['id']; 
            //echo $username .'`s password is : '. $password.'<br>'; 
            $data = array('id'=>$id , 'name'=> 'Username : '. $username ,'password'=>'Password : '. $password); 
            $final[$i]=$data;
            $i++;
            //print(json_encode($data)); 
            //print(json_encode($password)); 
        } 
        print(json_encode($final_data));
    }else{
     echo mysql_error(); 
    }

javaパート

String jsonResult = inputStreamToString(response.getEntity().getContent()).toString();
JSONArray mArray = new JSONArray(jsonResult);
for (int i = 0; i < mArray.length(); i++) {
    JSONObject object = mArray.getJSONObject(i);

    String name = object.getString("name");
    String password = object.getString("password");
    textView.setText(name + " - " + password);
}
于 2013-03-22T06:22:08.713 に答える
1

サーバーからオブジェクトのjson配列を返します。これを変える

JSONObject object = new JSONObject(jsonResult);

これに

JSONArray objects = new JSONArray(jsonResult);

次に、jsonArrayを繰り返し、配列アイテムごとにjsonObjectを作成します。

for (int i = 0; i < objects.length(); i++) {
    JSONObject jsonObject = jsonArray.getJSONObject(i);

    // do something here

}
于 2013-03-22T01:55:09.890 に答える