如何在Android中解析JsonArray并在Textview上设置值

时间:2016-08-11 07:22:17

标签: android arrays json android-fragments text-parsing

以下是我在获取Url时使用解析参数strlogid = 101获取的Json响应

[

  {

    "earnpoints": 411,
    "type": "C"
  },

  {

    "earnpoints": 1600,
    "type": "G"
  },

  {

    "earnpoints": 13540,
    "type": "I"
  }

]

以下是我的代码 - 在3种不同的文字视图上显示点数

private class PointTask extends AsyncTask<String, Void, Boolean> {

        protected Boolean doInBackground(final String... args) {

            JSONParse jParser = new JSONParse();

            HashMap<String, String> hMap = new HashMap<>();
            hMap.put("strlogid", "101");
            JSONArray jsonarray = jParser.getJSONFromUrl(url,hMap);

            // get JSON data from URL
            for (int i = 0; i < jsonarray.length(); i++) {
                try {
                    JSONObject c = (JSONObject) jsonarray.get(i);
                     c_point=c.getString("points");
                     g_point=c.getString("points");
                    i_point=c.getString("points");
                    t_point = cpoint+gpoint+ipoint;
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
            return null;
            }
        @Override
        protected void onPostExecute(final Boolean success) {
            txtTotalPoints.setText(t_point);
            txtOwnPoints.setText(g_point);
            txtClubPoints.setText(c_point);
            txtVoucherPoints.setText(i_point);

        }
    }

分别在Textview上显示TotalPoints,OwnPoints,ClubPoints,VoucherPoints

3 个答案:

答案 0 :(得分:0)

不要使用异步任务进行json解析。我建议你使用凌空。

这是链接\

http://www.androidhive.info/2014/05/android-working-with-volley-library-1/

答案 1 :(得分:0)

试试这个

protected Boolean doInBackground(final String... args) {

        JSONParse jParser = new JSONParse();

        HashMap<String, String> hMap = new HashMap<>();
        hMap.put("strlogid", "101");
        JSONArray jsonarray = jParser.getJSONFromUrl(url,hMap);

        // get JSON data from URL
        for (int i = 0; i < jsonarray.length(); i++) {
                JSONObject c = (JSONObject) jsonarray.get(i);
                if (c.getString("type").toString().equalsIgnoreCase("C")) {
                    c_point = c.getInt("earnpoints");
                } else if (c.getString("type").toString().equalsIgnoreCase("G")) {
                    g_point = c.getInt("earnpoints");
                } else if (c.getString("type").toString().equalsIgnoreCase("I")) {
                    i_point = c.getInt("earnpoints");
                }
            }
            t_point = cpoint + gpoint + ipoint;
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
        }
    @Override
    protected void onPostExecute(final Boolean success) {
        txtTotalPoints.setText(t_point);
        txtOwnPoints.setText(g_point);
        txtClubPoints.setText(c_point);
        txtVoucherPoints.setText(i_point);

    }
}

答案 2 :(得分:-1)

@Override
public void onPostSuccess(String result, int id, boolean isSucess) {
    // Log.e("re<><><><>", result);
    try {
        JSONArray ja = new JSONArray(result);
        for (int arr = 0; arr < ja.length(); arr++) {
            JSONObject json1 = ja.getJSONObject(arr);

            Log.e("length", "" + ja.length());
            // Getting JSON Array node
            String earnpoints= json1.getString("earnpoints");
            String type = json1.getString("type");
        }
     catch (JSONException e) {
        e.printStackTrace();
        Toast.makeText(LoginPage.this, "Please try again later", Toast.LENGTH_SHORT).show();
    }
}