java - 从 PHP/MySQL 到 Java/JSON

标签 java android json

我已经完全更新了这个问题:

这是我在 PHP 中的 json_encode 示例:

print(json_encode($row));

导致{"AverageRating":"4.3"},这很好。

但是在Java中,我似乎无法获取这个4.3值。这是(对于 Android 项目)我编辑了不相关的数据。

 public class Rate extends ListActivity {

   JSONArray jArray;
   String result = null;
   InputStream is = null;
   StringBuilder sb = null;
   String Item, Ratings, Review, starAvg;
   RatingBar ratingsBar;
   ArrayList<NameValuePair> param;

  public void onCreate(Bundle savedInstanceState) {

      starAvg = "0";
      new starRatingTask().execute();
      ratingsBar = (RatingBar) findViewById(R.id.theRatingBar);


  class starRatingTask extends AsyncTask<String, String, Void> {

    InputStream is = null;
    String result = "";


    @Override
    protected Void doInBackground(String... params) {
        String url_select = "http://www.---.com/---/average_stars.php";

        ArrayList<NameValuePair> param = new ArrayList<NameValuePair>();
        param.add(new BasicNameValuePair("item", Item));


        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url_select);


        try {
            httpPost.setEntity(new UrlEncodedFormEntity(param));
            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();

            // read content
            is = httpEntity.getContent();

        } catch (Exception e) {

            Log.e("log_tag", "Error in http connection " + e.toString());
        }
        try {
            BufferedReader br = new BufferedReader(
                    new InputStreamReader(is));
            StringBuilder sb = new StringBuilder();
            String line = "";
            while ((line = br.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            result = sb.toString();

        } catch (Exception e) {

            Log.e("log_tag", "Error converting result " + e.toString());
        }

        return null;

    }

    protected void onPostExecute(Void v) {


        try {
            jArray = new JSONArray(result);
            JSONObject json_data = null;
            for (int i = 0; i < jArray.length(); i++) {
                json_data = jArray.getJSONObject(i);
                starAvg = json_data.getString("AverageRating");

            }
        } catch (JSONException e1) {
            Toast.makeText(getBaseContext(), "No Star Ratings!",
                    Toast.LENGTH_LONG).show();
        } catch (ParseException e1) {
            e1.printStackTrace();
        }


                Toast.makeText(getBaseContext(), starAvg,
                        Toast.LENGTH_LONG).show();

        ratingsBar.setRating(Float.valueOf(starAvg));



    }
}

第二个 toast 评级产生“0”,如一开始所设置的那样。

最佳答案

为什么不以 JSON 形式传回“整个”行?

print(json_encode($row));

JSON 旨在表示对象,如果您只是传回一个数字,那么将其作为数字字符串传递不是更好吗?不过,我知道想要使用 JSON,因此它是通用的,这就是为什么您应该将整行传回。然后它将是一个包含平均值的数组(只有一个元素)。

关于java - 从 PHP/MySQL 到 Java/JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11149197/

相关文章:

java - 如何在Java-Spark微服务框架中创建Request和Response对象?

android - CollapsingToolbarlayout 中的工具栏问题

html - angularjs:依赖于json数据的动态html

javascript - 如何从 MVC Controller 访问 JSON 属性

ios - 解析本地json文件到对象

java - Java 中使用位置索引进行流标记

java - 使用 Domino XPages 实现 java Google Drive API 时的安全问题

java - 从 bash 管理 Linux 中的进程/服务

java - 如果我知道图像的 URL,如何获取图像大小?安卓(java)

android - 手机浏览器如何管理cookie?