Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PHP/MySQL到Java/JSON_Java_Android_Json - Fatal编程技术网

从PHP/MySQL到Java/JSON

从PHP/MySQL到Java/JSON,java,android,json,Java,Android,Json,我已经完全更新了这个问题: 以下是我的PHP json_编码示例: print(json_encode($row)); 导致{“平均化”:“4.3”},这很好 但在Java中,我似乎无法抓住这个4.3值。这里是(对于一个Android项目),我编辑了不相关的数据 public class Rate extends ListActivity { JSONArray jArray; String result = null; InputStream is = null;

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

以下是我的PHP json_编码示例:

print(json_encode($row));
导致{“平均化”:“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));



    }
}
公共类速率扩展ListActivity{
杰索纳雷·贾雷;
字符串结果=null;
InputStream=null;
StringBuilder sb=null;
字符串项、评级、审查、starAvg;
比率杆比率杆;
ArrayList参数;
创建时的公共void(Bundle savedInstanceState){
starAvg=“0”;
新建starRatingTask().execute();
ratingsBar=(RatingBar)findViewById(R.id.theRatingBar);
类starRatingTask扩展了异步任务{
InputStream=null;
字符串结果=”;
@凌驾
受保护的Void doInBackground(字符串…参数){
字符串url_select=”http://www.---.com/---/average_stars.php";
ArrayList param=新的ArrayList();
参数添加(新的BasicNameValuePair(“项”,项));
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(url\u选择);
试一试{
setEntity(新的UrlEncodedFormEntity(参数));
HttpResponse HttpResponse=httpClient.execute(httpPost);
HttpEntity HttpEntity=httpResponse.getEntity();
//阅读内容
is=httpEntity.getContent();
}捕获(例外e){
e(“Log_标记”,“http连接错误”+e.toString());
}
试一试{
BufferedReader br=新的BufferedReader(
新的InputStreamReader(is));
StringBuilder sb=新的StringBuilder();
字符串行=”;
而((line=br.readLine())!=null){
sb.追加(第+行“\n”);
}
is.close();
结果=sb.toString();
}捕获(例外e){
Log.e(“Log_标记”,“错误转换结果”+e.toString());
}
返回null;
}
受保护的void onPostExecute(void v){
试一试{
jArray=新的JSONArray(结果);
JSONObject json_data=null;
for(int i=0;i

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

为什么不用JSON将“整”行传回呢

print(json_encode($row));

JSON是用来表示对象的,如果你只是传回一个数字,将其作为一个数字的字符串传递不是更好吗?但是我理解你想要使用JSON,所以它是通用的,这就是为什么你应该传回整行。然后它将是一个数组(带有一个元素)它包含平均值。

谢谢!那么我在这里调用什么来获取Java中的值呢?starAvg=json_data.getString(--?--);通常输入所有列名,但这里不适用吗?您可以在SQL中始终使其“具有”列名。例如:“选择平均值(评级)作为来自评分的平均值,其中item_id='{$item_id}',其中AverageRating是名称。嘿,谢谢,终于有机会尝试了,但它不起作用。我不知道是PHP还是Java端…更新:PHP端现在说这个{“AverageRating”:“4.3”}因此,这个端看起来还可以。但是Java端似乎正在崩溃。很抱歉,我对它的Java端不太熟悉。您使用的是什么库?我可以尝试修补。另外,您是否尝试过在“jArray=new JSONArray(result);”处设置断点,然后逐步查看失败的地方?