0

データを操作するためにphpjson_encode($array)をアンドロイドに入れる方法は?

json_encode($array); で配列をエンコードする php があります。そして私がいつ

echo json_encode($array);

私は得る:

[{"id":"1","name":"player1","score":"20","quarter":"Q - 1"},{"id":"2","name":"player2","score":"18","quarter":"http:\/\/localhost\/win.jpg"}]

Androidでは、phpからその配列を取得し、たとえばインデックス0からキー名を含む文字列値を取得して、その文字列をtextViewテキストに設定できるようにする配列に配置したいと考えています。iPhoneでは、次のコードのみを実行します:

NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

(データは私のローカル URL "http://localhost/my.php" です)

valueForKey:nameそして、辞書からデータを簡単に取得して、objectAtIndex:0文字列をテキストフィールドに入れることができます。

私が理解できるように、Javaでのコード実装を完了してください。私はJavaが初めてで、さまざまな方法でこれをやろうとしている多くのエラーと時間で頭を失っているからです。

私の問題を解決してくれた人に感謝します。

4

3 に答える 3

1

org.apache.http.client.HttpClientを使用して文字列への応答を受信します。

HttpClient httpclient = new DefaultHttpClient();
try {
    HttpPost httppost = new HttpPost(this.getURL());
    // attach the request with post data
    List<NameValuePair> pairs = new ArrayList<NameValuePair>(); 
    pairs.add(new BasicNameValuePair("username", username)); 
    pairs.add(new BasicNameValuePair("password", password));        
    httppost.setEntity(new UrlEncodedFormEntity(pairs));
    //send request to server
    HttpResponse response = httpclient.execute(httppost);
    //trace response
    InputStream is = response.getEntity().getContent();
    //convert response to string
    BufferedReader myReader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"));
    StringBuilder sb = new StringBuilder();
    sb.append(myReader.readLine() + "\n");
    String line="";
    while ((line = myReader.readLine()) != null) {
        sb.append(line + "\n");
    }
    result = sb.toString();
} catch (Exception e) {
    e.printStackTrace();
}

次に、org.json.JSONObjectまたはorg.json.JSONArrayを使用できます。

JSONObject json_data= new JSONObject(result);
int userId = Integer.parseInt(json_data.getString("user_id"));
JSONArray arrJson = json_data.getJSONArray("data");
于 2012-04-24T00:32:34.547 に答える
1

このエラーは、json 配列を名前なしで送信しているために発生します。

json 配列を保存したら、次のようにします。

echo json_encode(array('acdata'=>$acdata));



eg:
while($row = $stmt->fetch ()){
 $acdata[] = array(
     'acid' => $acid,
     'address' => $address,
     'companyname' => $companyname,
     'dateofpurchase' => $dateofpurchase,
     'ac_type' => $ac_type
);
}
header('Content-type: application/json');
echo json_encode(array('acdata'=>$acdata));

次に、アンドロイドで次のように取得します。

JSONObject jsonRootObject = new JSONObject(result);
JSONArray jsonArray = jsonRootObject.optJSONArray("acdata");
JSONObject jsonObject = jsonArray.getJSONObject(1);
name = jsonObject.optString("acid");

//acid は json のキーの名前です

// ループに入れてすべての値を取得します

于 2016-07-04T10:33:05.977 に答える
0

ほとんどのジョブを自動的に作成する多くのサードパーティ クラスがあります。車輪を発明する必要はありません。Retrofit または Volley を簡単に使用できます。私のプロジェクトでうまく機能しています。彼らはあなたに代わって多くのことを処理します。各プレーヤー オブジェクトのすべてのプロパティを 1 つのオブジェクトにパッケージ化するクラスを定義してから、レトロフィット API を使用します。次のヒントが役立つかもしれません。

public interface QuestionAPI {
    @GET("player.php")//you can call php file directly
    public void getFeed(Callback <List<PlayerObject>> playerobject);
}
于 2016-03-20T03:11:17.843 に答える