无法解决Json Object代码

时间:2017-05-13 18:36:57

标签: java android arrays json getjson

我想写一个android代码来检索json数组,但我不能这样做。我尝试了很多教程,但似乎没有任何效果。请任何人解决这个问题。

这是Json:

{
    "total_records":"3370",
    "count":100,
    "records": [
                   {"id":"175274241",
                    "timestamp":"1494685823",
                    "state":"Telangana",
                    "district":"Warangal",
                    "market":"Mahabubabad",
                    "commodity":"Cotton",
                    "variety":"Desi",
                    "arrival_date":"13/05/2017",
                    "min_price":"4150",
                    "max_price":"4150",
                    "modal_price":"4150" }
              ]
}

这是Android代码

 public class MainActivity extends Activity {


// CONNECTION_TIMEOUT and READ_TIMEOUT are in milliseconds
public static final int CONNECTION_TIMEOUT = 10000;
public static final int READ_TIMEOUT = 15000;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    new AsyncLogin().execute();
}

private class AsyncLogin extends AsyncTask<String, String, String> {
    ProgressDialog pdLoading = new ProgressDialog(MainActivity.this);
    HttpURLConnection conn;
    URL url = null;

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        //this method will be running on UI thread
        pdLoading.setMessage("\tLoading...");
        pdLoading.setCancelable(false);
        pdLoading.show();

    }

    @Override
    protected String doInBackground(String... params) {
        try {

            // Enter URL address where your json file resides
            // Even you can make call to php file which returns json data
            url = new URL("website url");

        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return e.toString();
        }
        try {

            // Setup HttpURLConnection class to send and receive data from php and mysql
            conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(READ_TIMEOUT);
            conn.setConnectTimeout(CONNECTION_TIMEOUT);
            conn.setRequestMethod("GET");

            // setDoOutput to true as we recieve data from json file
            conn.setDoOutput(true);

        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
            return e1.toString();
        }

        try {

            int response_code = conn.getResponseCode();

            // Check if successful connection made
            if (response_code == HttpURLConnection.HTTP_OK) {

                // Read data sent from server
                InputStream input = conn.getInputStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(input));
                StringBuilder result = new StringBuilder();
                String line;

                while ((line = reader.readLine()) != null) {
                    result.append(line);
                }

                // Pass data to onPostExecute method
                return (result.toString());

            } else {

                return ("unsuccessful");
            }

        } catch (IOException e) {
            e.printStackTrace();
            return e.toString();
        } finally {
            conn.disconnect();
        }


    }

    @Override
    protected void onPostExecute(String result) {

        //this method will be running on UI thread

        pdLoading.dismiss();
        pdLoading.dismiss();
        try {
            List<String> categories = new ArrayList<String>();

            JSONArray jArray = new JSONArray(result);

            // Extract data from json and store into ArrayList as class objects
            for(int i=0;i<jArray.length();i++){
                JSONObject json_data = jArray.getJSONObject(i);
                String str = json_data.getString("records");


                Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT).show();

            }


        } catch (JSONException e) {

            Toast.makeText(MainActivity.this,""+e,Toast.LENGTH_LONG).show();

        }

    }

}

}

任何人都为上面的json数据编写了一个android代码。

1 个答案:

答案 0 :(得分:0)

如果您的json数据在字符串jsonStr中。在下面的代码的帮助下,您可以解析您的json

try {
               JSONObject jsonObj = new JSONObject(jsonStr);

String records = jsonObj.getString("total_records");
String count= jsonObj.getString("count");

// Getting JSON Array node
               JSONArray records= jsonObj.getJSONArray("records");

               // looping through All Contacts
               for (int i = 0; i < records.length(); i++) {
                  JSONObject c = records.getJSONObject(i);
                  String id = c.getString("id");
                  String timestamp= c.getString("timestamp");
                  String state= c.getString("state");
                  String district= c.getString("district");
                  String market= c.getString("market");
                    String commodity= c.getString("commodity"); 
                String variety= c.getString("variety"); 
                String arrival_date= c.getString("arrival_date");
                  String min_price= c.getString("min_price");
                   String max_price= c.getString("max_price");   
                     String modal_price= c.getString("modal_price");
  }
            } catch (final JSONException e) {
               Log.e(TAG, "Json parsing error: " + e.getMessage());
               runOnUiThread(new Runnable() {
                  @Override
                  public void run() {
                     Toast.makeText(getApplicationContext(),
                     "Json parsing error: " + e.getMessage(),
                        Toast.LENGTH_LONG).show();
}