Bulk Emailing

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Tuesday, 12 April 2011

JSON to Java Bean conversion for Android

Posted on 00:43 by Unknown
I have written a small add-on for inbuilt JSON Lib of Android (org.json.*). Android's in-build JSON library is very permeative and provides just the basic functionalities. There is no Tokenize functionality which can automatically convert a JSON string into its relevant Java Bean class.

Though there are few alternate open source libraries like jackson-json, gson etc. But the inbuilt JSON library of Android is pretty simple to use and with this add-on you'll be able to get the missing flavor of auto-bean conversion.

How to use it ?
Please download the JSONHandler.java and include in your Android project source code. It provides an important method parse() which can convert a JSON string into Java Bean class.
It uses Java re-factoring, so Bean class field name and JSON property name should exactly match. Let's look into how to parse a simple JSON structure-
String jsonString = "{name: 'Jon Smith', id: 1234, " +
    "address: {cityName: 'San Diego', pinCode:345, latitude: 23.789, longitude: 78.965}," +
                    "}";
To parse above JSON structure you need to create a Bean class- Person.java having following properties and their Get/Set methods-
String name;
int id;
Address address;
As you can see Address is again a custom class- Address.java having following properties and their Get/Set methods-
String cityName;
int pinCode;
double latitude;
double longitude;

Once you define above 2 bean classes, you can use following piece of code to parse the JSON string into above bean class-
Person person = (Person)(new JSONHandler().parse(jsonString, Person.class, "com.prasanta"));
In the above code piece, "com.prasanta" is the name of base package under which Bean classes are defined.

Let's take an example where the JSON String itself is an Array-
String jsonString = "messages: [{id: 1, sub: 'Hi1', msg: 'I am here1'}, {id: 2, sub: 'Hi2', msg: 'I am here2'}]";
Above information represents an array of Message objects. Structure of Message.java (with Get/Set methods)-
int id;
String sub;
String msg;

JSONHandler.parse() method accepts only JSON Object and not JSONArray. So, we need to parse this array and pass individual JSON Object to the parse()-
JSONObject object = (JSONObject) new JSONTokener(json_resp.getResponseMessage()).nextValue();
JSONArray messages = object.getJSONArray("messages");

 for(int i=0; i LT messages.length(); i++){
    JSONObject message = messages.getJSONObject(i);
    Message msg = (Message)new JSONHandler().parse(message.toString(), Message.class, "com.prasanta");
 }
In the above code piece, "com.prasanta" is the name of base package under which Bean classes are defined.

So, how good is that :-) You can enhance the parsing logic as per your requirement. 
Email ThisBlogThis!Share to XShare to Facebook
Posted in | No comments
Newer Post Older Post Home

0 comments:

Post a Comment

Subscribe to: Post Comments (Atom)

Popular Posts

  • CityWeather
    Update: Release 1.1 has been uploaded. It will now provide weekly forecast of your selected cities. Download   CityWeather is an Android...

Blog Archive

  • ►  2013 (6)
    • ►  September (2)
    • ►  May (1)
    • ►  April (1)
    • ►  February (1)
    • ►  January (1)
  • ►  2012 (4)
    • ►  July (2)
    • ►  March (1)
    • ►  January (1)
  • ▼  2011 (11)
    • ►  November (1)
    • ►  October (2)
    • ►  August (1)
    • ►  June (1)
    • ▼  April (2)
      • JSON to Java Bean conversion for Android
      • Overriding In JavaScript
    • ►  March (3)
    • ►  January (1)
  • ►  2010 (27)
    • ►  December (2)
    • ►  November (3)
    • ►  September (2)
    • ►  August (4)
    • ►  July (4)
    • ►  June (7)
    • ►  May (5)
Powered by Blogger.

About Me

Unknown
View my complete profile