-1

次の形式のJSONデータがあります

[{"product_id":"33","amount":"1"},{"product_id":"34","amount":"3"},{"product_id":"10","amount": "1"},{"ユーザー名":"テスト"}]

PHP Web システムでこれらのデータを取得したいと考えています。これらのデータを Android アプリケーションから PHP サーバーに送信しています。以下のコードを使用して、Web サーバーに送信しています。

public JSONObject sendAndGetJSONfromURL(String url,List<NameValuePair> params){
        InputStream is = null;
        String result = "";
        JSONObject jArray = null;

        //http post
        try{
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(url);
                httppost.setHeader("Content-type", "application/json");
                httppost.setHeader("Accept", "application/json");
                httppost.setEntity(new UrlEncodedFormEntity(params));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();
.....

送信する前に印刷します

jArray.toString()
出力は次のようになりました

[{"product_id":"33","amount":"1"},{"product_id":"34","amount":"3"},{"product_id":"10","amount":"1"},{"username":"test"}]

PHP システムからこれらの値を取得する方法を知りたいです。誰でも私を助けてもらえますか?

HTTPRequest 経由で送信する前の params 変数値の出力は、次のようになります。

[cartdata=[{"product_id":"33","amount":"1"},{"product_id":"34","amount":"3"},{"product_id":"10","amount":"1"},{"username":"UWUDAMITH"}]]
4

4 に答える 4

0

私はJava/Androidを初めて使用するため、これは最善の方法ではないかもしれませんが、私にとってはうまくいきます:)

      HttpClient httpclient = new DefaultHttpClient();
      HttpPost httppost = new HttpPost("http://www.yourdomain.com/save.php");

      try {
        // Add your data
          List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
          nameValuePairs.add(new BasicNameValuePair("id", "1"));
          nameValuePairs.add(new BasicNameValuePair("json",jArray.toString()));
          httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
          HttpResponse response = httpclient.execute(httppost);

      } catch (ClientProtocolException e) {
          // TODO Auto-generated catch block
      } catch (IOException e) {
          // TODO Auto-generated catch block
      }

これにより、$ _ POST ['id'] = 1でサーバーに投稿が送信され、次に$ _POST['json']=がjsonデータに送信されます。

これがsave.phpです。私は実際にそれをMySQLに保存しているので、そうです。

    <?php
    $server = "localhost";
    $username = "user";
    $password = "pass";
    $database = "db";
    $con = mysql_connect($server, $username, $password) or die ("Could not connect: " . mysql_error());
    mysql_select_db($database, $con);

    $id = $_POST["id"];
    $json = $_POST["json"];

    $sql = "INSERT INTO comments (id, json) ";
    $sql .= "VALUES ($id, '$json')";

    if (!mysql_query($sql, $con)) {
        die('Error: ' . mysql_error());
    } else {
        echo "Comment added";
    }
    mysql_close($con);
    echo json_decode($json);
    ?>
于 2012-09-23T08:06:30.873 に答える
0

使用するjson_decode()

http://php.net/manual/en/function.json-decode.php

使用法: json_decode($json, true)//json を連想配列にデコードします

于 2012-09-23T06:52:06.160 に答える
0

http://php.net/manual/en/function.json-decode.phpこれは便利です。関数の正反対については、http://php.net/manual/en/function.json-encode.phpも確認してください。

于 2012-09-23T06:52:08.377 に答える
0

データを urlencoded 形式で送信すると、値は $_POST PHP の配列に表示されます。json_decode() を使用してそれらをデコードできる場所から:

$json = $_POST['json']; // assumes JSON is posted as "json" POST variable
$data = url_decode($json, true); // gets you associative arrays, not objects

必要な作業は、POST で JSON 文字列を "json" 変数として送信し、リクエストの本文で適切にエンコード (URL エンコード) することだけです。

于 2012-09-23T06:54:02.023 に答える