Introduction
This article explains the parsing of data and storing it in a 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 upgrade database.
Step 1
Create a project like this:
Step 2
Create an XML file with this:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:background="#f610">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView1"
android:textStyle="bold"
android:textColor="#ffffff"
android:textSize="15dp"
/>
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/listView"></ListView>
</RelativeLayout>
Step 3
Create a Java class file with this:
package com.jsonparsingexample2;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
public class MainActivity extends Activity {
String ParsingDta= "{\"Employee\":[{\"id\":\"101\",\"name\":\"sonoo jaiswal\",\"salary\":\"50000\"},{\"id\":\"102\",\"name\":\"vimal jaiswal\",\"salary\":\"600000\"}]}";
TextView textView1;
ArrayList arrayList;
String str="";
ListView listView;
Database database;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
database=new Database(this);
// this.deleteDatabase("EmployeeDatabase.db");
database.getWritableDatabase();
textView1=(TextView)findViewById(R.id.textView1);
listView=(ListView)findViewById(R.id.listView);
try
{
JSONObject jsonObject=new JSONObject(ParsingDta);
JSONArray jsonArray= jsonObject.getJSONArray("Employee");
for(int i=0;i<jsonArray.length();i++)
{
JSONObject jsonObject1=jsonArray.getJSONObject(i);
String id=jsonObject1.getString("id").toString();
String name=jsonObject1.getString("name").toString();
String salary=jsonObject1.getString("salary").toString();
database.insertData(id,name,salary);
str+="\n Employee"+i+ "\n name:"+name+"\n id:"+id+"\n salary:" +salary+"\n";
//textView1.setText(str);
}
}
catch(JSONException e)
{
e.printStackTrace();
}
arrayList=database.fetchData();
ArrayAdapter adapter=new ArrayAdapter(getApplicationContext(),android.R.layout.activity_list_item,android.R.id.text1,arrayList);
listView.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}}
Step 4
Create another Java class file with this:
package com.jsonparsingexample2;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.widget.ArrayAdapter;
import java.util.ArrayList;
/**
* Created by vivek on 10/29/13.
*/
public class Database extends SQLiteOpenHelper {
public Database(Context context)
{
super(context, "EmployeeDatabase.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String tableEmp="create table emp(id text,name text,salary text)";
db.execSQL(tableEmp);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public void insertData(String id,String name, String salary)
{
SQLiteDatabase sqLiteDatabase=this.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("id",id);
values.put("name",name);
values.put("salary",salary);
sqLiteDatabase.insert("emp",null,values);
}
public ArrayList fetchData()
{
ArrayList<String>stringArrayList=new ArrayList<String>();
String fetchdata="select * from emp";
SQLiteDatabase sqLiteDatabase=this.getReadableDatabase();
Cursor cursor=sqLiteDatabase.rawQuery(fetchdata, null);
if(cursor.moveToFirst()){
do
{
stringArrayList.add(cursor.getString(0));
stringArrayList.add(cursor.getString(1));
stringArrayList.add(cursor.getString(2));
} while (cursor.moveToNext());
}
return stringArrayList;
}
}
Step 5
Android Manifest.xml file
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.jsonparsingexample2"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="16" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.jsonparsingexample2.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Step 6
Fetch data stored in a SQLite Database: