0

I have the following data in Json how could I retrieve data from this file

{"first_name":"immi","last_name":"Ahmad","contact_no":"0333333","dob":"2010-09-29","gender":"Male","pro_id":"3"}

also i m using http request to acces this file from android.i want to get every field and store it in a local variable in android.i tried the following but in vain.

 JSONObject json_data = new JSONObject(result);
            json_data.getJSONObject("userinfo");
            json_data.getString("first_name");

this is my android complete class

public class ProfileActivity extends ActionBarActivity {

   //data for through http request
   static InputStream is = null;
    String result = "flag";
    String line = null;
    int userId;
    String action="select";
    String workTable="user";

    ArrayList<HashMap<String, String>> personList;

    //till here for through http request

    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile);


        userId = ((GlobalValues) this.getApplication()).getUserId();

        Toast.makeText(ProfileActivity.this, "user id is"+userId, Toast.LENGTH_SHORT).show();

       select();




        //for retrieval oncreate

    }
    public void select() {


        final ArrayList<HashMap<String, String>> personList;
        personList = new ArrayList<HashMap<String, String>>();

        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

         nameValuePairs.add(new BasicNameValuePair("action", action));
        nameValuePairs.add(new BasicNameValuePair("worktable",workTable));
        nameValuePairs.add(new BasicNameValuePair("user_id",String.valueOf(userId)));



        try {
            HttpClient httpclient = new DefaultHttpClient();

            HttpPost httppost = new HttpPost("http......");
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
            Log.e("pass 1", "connection success ");
        } catch (Exception e) {
            Log.e("Fail 1", e.toString());
            Toast.makeText(getApplicationContext(), "Invalid IP Address",
                    Toast.LENGTH_LONG).show();
        }

        try {
            BufferedReader reader = new BufferedReader
                    (new InputStreamReader(is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            result = sb.toString();
            Log.e("pass 2", "connection success ");
        } catch (Exception e) {
            Log.e("Fail 2", e.toString());
        }

        try {
              JSONObject userinfo= new JSONObject(result);

        String fname=  userinfo.getString("first_name");
        Toast.makeText(ProfileActivity.this, "name is"+fname, Toast.LENGTH_SHORT).show();

            String fname=  userinfo.getString("first_name");
            Toast.makeText(ProfileActivity.this, "name is"+fname, Toast.LENGTH_SHORT).show();
           // JSONArray peoples = json_data.getJSONArray("userinfo");


           /* for (int i = 0; i < peoples.length(); i++) {

                JSONObject c = peoples.getJSONObject(i);
                String first_name = null, last_name = null, gender = null,contact_number=null,dob=null,profession_id=null;
                first_name = c.getString("first_name");
                last_name = c.getString("last_name");
                contact_number = c.getString("contact_no");
                dob=c.getString("dob");
                gender=c.getString("gender");
                profession_id=c.getString("pro_id");

                final HashMap<String, String> persons = new HashMap<String, String>();
                persons.put("firstName", first_name);
                persons.put("last_name", last_name);
                persons.put("contact_number", contact_number);
                persons.put("gender", gender);
                persons.put("dob", dob);
                persons.put("pro_id", profession_id);
                personList.add(persons);
                Toast.makeText(ProfileActivity.this, "your name is "+first_name, Toast.LENGTH_SHORT).show();

            }*/
        }catch (Exception e){
            Log.e("fil 3",e.toString());
        }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_profile, menu);
        return true;



    }



    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        item.getItemId();
        switch (item.getItemId()) {
            case R.id.action_settings:
                goToHome();
                return true;



            default:
                return super.onOptionsItemSelected(item);
        }


    }

    public void goToHome(){

        Intent gotohome =new Intent(this,MapsActivity.class);
        startActivity(gotohome);
    }

    public void  goToEditProfile(View view){


        Intent gotoeditprofile=new Intent(this,TabedActivity.class);


        startActivity(gotoeditprofile);

    }

}

and this is my php statment which returns json as above

$user_id= $_GET['user_id']; 
        $sqlselectuser="SELECT first_name,last_name,contact_no,dob,gender,pro_id FROM user WHERE user_id='$user_id'";           
    $ansuser=mysqli_query($con,$sqlselectuser);
                  $resuser=mysqli_fetch_assoc($ansuser);
            if($resuser['dob']=="0000-00-00"){
                $userinfo = array("first_name"=>$resuser['first_name'],"last_name"=>$resuser['last_name'],
                "contact_no"=>$resuser['contact_no'],"dob"=>date("Y-m-d"),"gender"=>$resuser['gender'],
                "pro_id"=>$resuser['pro_id']);
              echo json_encode($userinfo);

3 Answers 3

1

if your responce is to big than @tiny sunlight method not work

You cant do like

     JSONObject userinfo= new JSONObject(result);
     userinfo.getString("first_name");
     JSONObject someObject = userinfo.getJsonObject("somthing")
     JSONObject somthingElse =   someObject.getJsonObject("somthingElse")

That become too hectic and nearly wasting your time

So BEST ANSWER is Gson Liabrary

Gson gson = new GsonBuilder().create();
Movie movie = gson.fromJson(response, Movie.class);

hear movie is class that you map from json - show in below link

you can do vise-varsa also

Gson gson = new GsonBuilder().create();
Responce mResponce = gson.fromJson(jsonStr , Responce .class);
String mName =mResponce.result.name;

https://stackoverflow.com/a/41218155/4741746

Hope you will understand which answer is best

Sign up to request clarification or add additional context in comments.

Comments

1
 JSONObject userinfo= new JSONObject(result);

            userinfo.getString("first_name");

Try to Use Gson to simplify it!

5 Comments

#tiny sunlight it shows me this exception Value action of type java.lang.String cannot be converted to JSONObject what its mean?
{"first_name":"immi","last_name":"Ahmad","contact_no":"0333333","dob":"2010-09-29","gender":"Male","pro_id":"3"} is your result?
Plz upload Exception screenshot.
can u print the result?
thank you i grabe the error.actually it was in my php file.i have to use POST instead of GET.thnx for your time .
0

That's your all the content of json file?

You should create a class to store the information of every json object.

example you create PersonalInformation class have have instances "firstname", "lastname", "gender"...

Then we use a for-loop statement to read all information.

Hope this help!

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.