How to Parse a JSON Object In Android example
Hi in this, Article I am sharing How to Parse a JSON Object In Android. JSON (JavaScript Object Notation) is the simplest data exchange formats to interchange the data from the server. In simple words, we can say that JSON is a lightweight and structured language. here you can find the full step by step guideline for how to parse JSON data and show data in UI.
Android support for all JSON format like, JSONObject, JSONArray, JSONStringer, etc. to parse the JSON data to get a piece of required information in android applications.
The main advantage of JSON is, it’s a language-independent and the JSON object will contain data like key/value pair.
Sample structure of JSON data in android applications.
{ "message":"Profile successfully view!", "status":"1", "allData":{ "id":5, "registration_no":"100005_GUR_TH", "name":"Ashita", "email":"ashita@gmail.com", "gender":"female", "mobile":"1234567890", "state":"13", "city":"1126", "dob":"2019-03-11", "branch":"2", "user_type":"5", "profile_pic":"dYCJd4l7NBeVEbB.jpg", "adhar_card":"PjioeLWRMQyoHki.pdf", "degree":"", "base_commision":"20", "occupation":"", "age":"0 Years", "stateName":"Haryana", "cityName":"Gurgaon", "branchName":"Delhi Panel", "profile_pics":"http:\/\/caprispine.org\/public\/upload\/profile_pic\/dYCJd4l7NBeVEbB.jpg", "degrees":"" } }
Android JSON Parsing Example
in this example of parsing the JSON string and get the required information from it using JSON String format. Create a new android application using an android studio, and using volley library for getting data for API.
Step 1: Create an Activity Name Profile.
in this activity, I am sharing a JSONObject response Using API data show in this activity. with a nice UI.
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:28.+' compile 'com.android.support:design:28.+' compile 'com.android.support:support-v4:28.+' compile 'de.hdodenhof:circleimageview:2.1.0' compile 'com.squareup.picasso:picasso:2.5.2' compile 'com.android.volley:volley:1.0.0' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' }
Step 2: Create A Profile UI In your activity_profile.xml.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@drawable/back" tools:context="com.codeplayon.Profile"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:paddingRight="5dp" android:orientation="vertical"> <de.hdodenhof.circleimageview.CircleImageView android:id="@+id/Profile" android:layout_width="100dp" android:layout_height="100dp" android:layout_gravity="right" android:layout_marginTop="50dp" android:src="@drawable/icon_user" android:tint="@color/colorAccent" app:civ_border_color="@color/colorAccent" app:civ_border_width="2dp" /> <TextView android:id="@+id/FirstName" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="2dp" android:layout_marginTop="5dp" android:textStyle="bold" android:singleLine="true" android:text="" android:gravity="right" android:textAppearance="?android:textAppearanceMedium" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="right" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:padding="2dp" android:layout_height="wrap_content" android:text=" Reg No: " android:gravity="right" android:textStyle="bold" android:singleLine="true" android:textAppearance="?android:textAppearanceSmall" /> <TextView android:id="@+id/Reg_No" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="2dp" android:textStyle="bold" android:singleLine="true" android:gravity="right" android:text="" android:textAppearance="?android:textAppearanceSmall" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="right" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:padding="2dp" android:layout_height="wrap_content" android:text=" Branch: " android:gravity="right" android:textStyle="bold" android:singleLine="true" android:textAppearance="?android:textAppearanceSmall" /> <TextView android:id="@+id/BranchName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="2dp" android:textStyle="bold" android:singleLine="true" android:gravity="right" android:text="" android:textAppearance="?android:textAppearanceSmall" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="right" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:padding="2dp" android:layout_height="wrap_content" android:text=" Email Id:" android:gravity="right" android:textStyle="bold" android:singleLine="true" android:textAppearance="?android:textAppearanceSmall" /> <TextView android:id="@+id/EmailName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="2dp" android:textStyle="bold" android:singleLine="true" android:gravity="right" android:text="" android:textAppearance="?android:textAppearanceSmall" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="right" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:padding="2dp" android:layout_height="wrap_content" android:text="Mobile No:" android:gravity="right" android:textStyle="bold" android:singleLine="true" android:textAppearance="?android:textAppearanceSmall" /> <TextView android:id="@+id/Mobile" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="2dp" android:textStyle="bold" android:singleLine="true" android:gravity="right" android:text="" android:textAppearance="?android:textAppearanceSmall" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="right" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="2dp" android:gravity="right" android:textStyle="bold" android:singleLine="true" android:text="Gender:" android:textAppearance="?android:textAppearanceSmall" /> <TextView android:id="@+id/GenderName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="2dp" android:gravity="right" android:textStyle="bold" android:singleLine="true" android:text="" android:textAppearance="?android:textAppearanceSmall" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="right" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="2dp" android:gravity="right" android:textStyle="bold" android:singleLine="true" android:text="D.O.B :" android:textAppearance="?android:textAppearanceSmall" /> <TextView android:id="@+id/DobName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="2dp" android:gravity="right" android:textStyle="bold" android:singleLine="true" android:text="" android:textAppearance="?android:textAppearanceSmall" /> </LinearLayout> <TextView android:id="@+id/Agency_Address" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="5dp" android:maxLines="6" android:layout_marginLeft="85dp" android:gravity="right" android:textStyle="bold" android:text="" android:textAppearance="?android:textAppearanceSmall" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="bottom" android:paddingBottom="5dp" android:paddingRight="5dp" android:layout_weight="1.5" android:orientation="vertical"> <ImageView android:layout_width="180dp" android:layout_height="70dp" android:layout_gravity="right" android:src="@drawable/app_icon"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textStyle="italic" android:gravity="right" android:padding="0dp" android:textColor="@color/colorPrimary" android:textAppearance="?android:textAppearanceMedium" android:text="CodePlayon"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textStyle="italic" android:gravity="right" android:padding="0dp" android:textColor="@color/colorAccent" android:textAppearance="?android:textAppearanceSmall" android:text="Share , Learn , and Explore "/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textStyle="italic" android:gravity="right" android:padding="5dp" android:textAppearance="?android:textAppearanceSmall" android:text="Ph.: +91-9671718285, 1234567890"/> <View android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginLeft="100dp" android:background="@color/colorPrimary"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textStyle="italic" android:gravity="right" android:padding="0dp" android:textAppearance="?android:textAppearanceSmall" android:text="Website : www.techplayon.com"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textStyle="italic" android:gravity="right" android:padding="0dp" android:textAppearance="?android:textAppearanceSmall" android:text="Website : www.codeplayon.com"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textStyle="italic" android:gravity="right" android:padding="0dp" android:textAppearance="?android:textAppearanceSmall" android:text="E-mail: codeplayonapp@gmail.com"/> </LinearLayout> </LinearLayout> </ScrollView> </LinearLayout>
Step 3: Open You Java Profile.java Class And Call API and get JsonObject Data.
public class Profile extends AppCompatActivity { public static final String KEY_EMAIL="userId"; public static String EMAIL; TextView TxName,TxEmail,TxMobile,TxAddress,TxReg_No,TxBranchName,TextGender,TxDobName; ImageView ProfileImage; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_profile); SessionManagement sessionManagement=new SessionManagement(); //log in page session if user is all Boolean isLoggedIn=sessionManagement.getLogin(Profile.this); EMAIL = sessionManagement.getSavedEmail(Profile.this); if (!isLoggedIn){ Intent intent = new Intent(Profile.this,Signin_Activity.class); startActivity(intent); } if (AppStatus.getInstance(this).isOnline()) { VendorProfile(); } else { ContextThemeWrapper ctw = new ContextThemeWrapper( Profile.this, R.style.Theme_AlertDialog); final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctw); alertDialogBuilder.setTitle("No internet connection"); alertDialogBuilder.setMessage("Check your internet connection or try again"); alertDialogBuilder.setPositiveButton("ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); alertDialogBuilder.show(); } TxName=(TextView)findViewById(R.id.FirstName); TxEmail=(TextView)findViewById(R.id.EmailName); TxMobile=(TextView)findViewById(R.id.Mobile); TxAddress=(TextView)findViewById(R.id.Agency_Address); ProfileImage=(ImageView)findViewById(R.id.Profile); TextGender=(TextView)findViewById(R.id.GenderName); TxReg_No=(TextView)findViewById(R.id.Reg_No); TxBranchName=(TextView)findViewById(R.id.BranchName); TxDobName=(TextView)findViewById(R.id.DobName); } private void VendorProfile(){ final ProgressDialog loading = new ProgressDialog(Profile.this); loading.setMessage("Please Wait..."); loading.show(); StringRequest stringRequest = new StringRequest(Request.Method.POST, ConfiURL.Profile_URL, new Response.Listener<String>() { @Override public void onResponse(String response) { try { Log.d("JSON", response); loading.dismiss(); JSONObject jsonObject = new JSONObject(response); String error_status = jsonObject.getString("status"); if (error_status.equals("0")) { String error_msg = jsonObject.getString("message"); Toast.makeText(Profile.this,error_msg,Toast.LENGTH_LONG).show(); } else { JSONObject userDetails = jsonObject.getJSONObject("allData"); String registration_no=userDetails.getString("registration_no"); String FirstName = userDetails.getString("name"); String Email = userDetails.getString("email"); String Phone = userDetails.getString("mobile"); String gender = userDetails.getString("gender"); String dob=userDetails.getString("dob"); String state = userDetails.getString("stateName"); String city = userDetails.getString("cityName"); String branchName = userDetails.getString("branchName"); String Image = userDetails.getString("profile_pics"); TxReg_No.setText(registration_no); TxBranchName.setText(branchName); TxName.setText(FirstName); TxMobile.setText(Phone); TxEmail.setText(Email); TextGender.setText(gender); TxDobName.setText(dob); TxAddress.setText("City: "+city+", "+"State: "+state); Picasso.with(Profile.this) .load(Image) .placeholder(R.drawable.icon_user) .into(ProfileImage); } }catch (Exception e) { Log.d("Tag", e.getMessage()); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { loading.dismiss(); if (error instanceof TimeoutError || error instanceof NoConnectionError) { ContextThemeWrapper ctw = new ContextThemeWrapper( Profile.this, R.style.Theme_AlertDialog); final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctw); alertDialogBuilder.setTitle("No connection"); alertDialogBuilder.setMessage(" Network timeout connection error please try again "); alertDialogBuilder.setPositiveButton("ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); alertDialogBuilder.show(); } else if (error instanceof AuthFailureError) { ContextThemeWrapper ctw = new ContextThemeWrapper( Profile.this, R.style.Theme_AlertDialog); final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctw); alertDialogBuilder.setTitle("Connection Error"); alertDialogBuilder.setMessage("Connection authentication failure error please try again"); alertDialogBuilder.setPositiveButton("ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); alertDialogBuilder.show(); //TODO } else if (error instanceof ServerError) { ContextThemeWrapper ctw = new ContextThemeWrapper( Profile.this, R.style.Theme_AlertDialog); final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctw); alertDialogBuilder.setTitle("Connection Error"); alertDialogBuilder.setMessage("Connection error please try again"); alertDialogBuilder.setPositiveButton("ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); alertDialogBuilder.show(); //TODO } else if (error instanceof NetworkError) { ContextThemeWrapper ctw = new ContextThemeWrapper( Profile.this, R.style.Theme_AlertDialog); final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctw); alertDialogBuilder.setTitle("Connection Error"); alertDialogBuilder.setMessage("Network connection error please try again"); alertDialogBuilder.setPositiveButton("ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); alertDialogBuilder.show(); //TODO } else if (error instanceof ParseError) { ContextThemeWrapper ctw = new ContextThemeWrapper( Profile.this, R.style.Theme_AlertDialog); final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctw); alertDialogBuilder.setTitle("Error"); alertDialogBuilder.setMessage("Parse error"); alertDialogBuilder.setPositiveButton("ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); alertDialogBuilder.show(); } } }) { @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> map = new HashMap<String, String>(); map.put(KEY_EMAIL, EMAIL); return map; } }; RequestQueue requestQueue = Volley.newRequestQueue(Profile.this); requestQueue.add(stringRequest); } public void onBackPressed(){ Intent intent=new Intent(Profile.this,Home.class); startActivity(intent); finish(); }