JsonParsing and Sqlite Database in Android

Introduction

 
This article explains the parsing of data and storing it in an SQLite database. Android Studio is used to create the sample.
 
JSON is the acronym for JavaScript Object Notation. JSON data is in two forms, one object data and another is array data that you need to parse to get the real data.
 
SQLite Database is an open-source data base provided by every Android system. SQLite database is used to create, read and update a database in an Android system. To use the SQLite database you need to extend the SQLiteOpenHelper class. The SQLite open helper class provides the onCreate() and onUpgrade() methods to create an upgraded database.
 
Step 1
 
Create a project like this:
 
CreateProjectJsonParsing
 
Step 2
 
Create an XML file with this:
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:paddingLeft="@dimen/activity_horizontal_margin"  
  6.     android:paddingRight="@dimen/activity_horizontal_margin"  
  7.     android:paddingTop="@dimen/activity_vertical_margin"  
  8.     android:paddingBottom="@dimen/activity_vertical_margin"  
  9.     tools:context=".MainActivity"  
  10.     android:background="#f610">  
  11.    
  12.     <TextView  
  13.         android:layout_width="wrap_content"  
  14.         android:layout_height="wrap_content"  
  15.         android:id="@+id/textView1"  
  16.         android:textStyle="bold"  
  17.         android:textColor="#ffffff"  
  18.         android:textSize="15dp"  
  19.         />  
  20.    
  21.     <ListView  
  22.         android:layout_width="wrap_content"  
  23.         android:layout_height="wrap_content"  
  24.         android:id="@+id/listView"></ListView>  
  25.    
  26. </RelativeLayout> 
Step 3
 
Create a Java class file with this:
  1. package com.jsonparsingexample2;  
  2. import android.os.Bundle;  
  3. import android.app.Activity;  
  4. import android.view.Menu;  
  5. import android.widget.ArrayAdapter;  
  6. import android.widget.ListView;  
  7. import android.widget.TextView;  
  8. import org.json.JSONArray;  
  9. import org.json.JSONException;  
  10. import org.json.JSONObject;  
  11.   
  12. import java.util.ArrayList;  
  13.   
  14. public class MainActivity extends Activity   
  15. {  
  16.   
  17.  String ParsingDta = "{\"Employee\":[{\"id\":\"101\",\"name\":\"sonoo jaiswal\",\"salary\":\"50000\"},{\"id\":\"102\",\"name\":\"vimal jaiswal\",\"salary\":\"600000\"}]}";  
  18.  TextView textView1;  
  19.  ArrayList arrayList;  
  20.  String str = "";  
  21.  ListView listView;  
  22.  Database database;  
  23.  @Override  
  24.  protected void onCreate(Bundle savedInstanceState)   
  25.  {  
  26.   super.onCreate(savedInstanceState);  
  27.   setContentView(R.layout.activity_main);  
  28.   database = new Database(this);  
  29.   // this.deleteDatabase("EmployeeDatabase.db");  
  30.   database.getWritableDatabase();  
  31.   textView1 = (TextView) findViewById(R.id.textView1);  
  32.   listView = (ListView) findViewById(R.id.listView);  
  33.   try   
  34.   {  
  35.    JSONObject jsonObject = new JSONObject(ParsingDta);  
  36.    JSONArray jsonArray = jsonObject.getJSONArray("Employee");  
  37.    for (int i = 0; i < jsonArray.length(); i++)   
  38.    {  
  39.     JSONObject jsonObject1 = jsonArray.getJSONObject(i);  
  40.     String id = jsonObject1.getString("id").toString();  
  41.     String name = jsonObject1.getString("name").toString();  
  42.     String salary = jsonObject1.getString("salary").toString();  
  43.     database.insertData(id, name, salary);  
  44.     str += "\n Employee" + i + "\n name:" + name + "\n id:" + id + "\n salary:" + salary + "\n";  
  45.     //textView1.setText(str);  
  46.    }  
  47.   }   
  48.   catch (JSONException e)   
  49.   {  
  50.    e.printStackTrace();  
  51.   }  
  52.   arrayList = database.fetchData();  
  53.   ArrayAdapter adapter = new ArrayAdapter(getApplicationContext(), android.R.layout.activity_list_item, android.R.id.text1, arrayList);  
  54.   listView.setAdapter(adapter);  
  55.  }  
  56.  @Override  
  57.  public boolean onCreateOptionsMenu(Menu menu)   
  58.  {  
  59.   // Inflate the menu; this adds items to the action bar if it is present.  
  60.   getMenuInflater().inflate(R.menu.main, menu);  
  61.   return true;  
  62.  }  
Step  4
 
Create another Java class file with this:
  1. package com.jsonparsingexample2;  
  2. import android.content.ContentValues;  
  3. import android.content.Context;  
  4. import android.database.Cursor;  
  5. import android.database.sqlite.SQLiteDatabase;  
  6. import android.database.sqlite.SQLiteOpenHelper;  
  7. import android.util.Log;  
  8. import android.widget.ArrayAdapter;  
  9.    
  10. import java.util.ArrayList;  
  11.    
  12. /** 
  13.  * Created by vivek on 10/29/13. 
  14.  */  
  15. public class Database extends SQLiteOpenHelper {  
  16.    
  17.     public Database(Context context)  
  18.     {  
  19.         super(context, "EmployeeDatabase.db"null1);  
  20.     }  
  21.     @Override  
  22.     public void onCreate(SQLiteDatabase db) {  
  23.     String tableEmp="create table emp(id text,name text,salary text)";  
  24.     db.execSQL(tableEmp);  
  25.     }  
  26.     @Override  
  27.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  28.     }  
  29.     public void insertData(String id,String name, String salary)  
  30.     {  
  31.         SQLiteDatabase sqLiteDatabase=this.getWritableDatabase();  
  32.         ContentValues values=new ContentValues();  
  33.         values.put("id",id);  
  34.         values.put("name",name);  
  35.         values.put("salary",salary);  
  36.         sqLiteDatabase.insert("emp",null,values);  
  37.     }  
  38.     public ArrayList fetchData()  
  39.     {  
  40.         ArrayList<String>stringArrayList=new ArrayList<String>();  
  41.         String fetchdata="select * from emp";  
  42.         SQLiteDatabase sqLiteDatabase=this.getReadableDatabase();  
  43.         Cursor cursor=sqLiteDatabase.rawQuery(fetchdata, null);  
  44.         if(cursor.moveToFirst()){  
  45.            do  
  46.             {  
  47.                 stringArrayList.add(cursor.getString(0));  
  48.                 stringArrayList.add(cursor.getString(1));  
  49.                 stringArrayList.add(cursor.getString(2));  
  50.              } while (cursor.moveToNext());  
  51.         }  
  52.     return stringArrayList;  
  53.     }  
Step  5
 
Android Manifest.xml file
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.jsonparsingexample2"  
  4.     android:versionCode="1"  
  5.     android:versionName="1.0" >  
  6.    
  7.     <uses-sdk  
  8.         android:minSdkVersion="7"  
  9.         android:targetSdkVersion="16" />  
  10.    
  11.     <application  
  12.         android:allowBackup="true"  
  13.         android:icon="@drawable/ic_launcher"  
  14.         android:label="@string/app_name"  
  15.         android:theme="@style/AppTheme" >  
  16.         <activity  
  17.             android:name="com.jsonparsingexample2.MainActivity"  
  18.             android:label="@string/app_name" >  
  19.             <intent-filter>  
  20.                 <action android:name="android.intent.action.MAIN" />  
  21.    
  22.                 <category android:name="android.intent.category.LAUNCHER" />  
  23.             </intent-filter>  
  24.         </activity>  
  25.     </application>  
  26. </manifest> 
Step  6
 
Fetch data stored in an SQLite Database:
 
JsonArrayData.jpg