1

Possible Duplicate:
Sending and Parsing JSON in Android

I am fetching JSON Data from server and I have already got JSON Data by code. But I didn't understand how to parse it.

Here is my code for server i am fetching data from mysql database and then sending to android device

   import java.io.*;
   import java.util.*;
   import javax.sql.*;
   import javax.servlet.*;
   import javax.servlet.http.*;
   import java.sql.Connection;
   import java.sql.DriverManager;
   import java.sql.ResultSet;
   import java.sql.SQLException;
   import java.sql.Statement;
   import net.sf.json.JSONArray;

   public class DBConnection extends HttpServlet {
          public void doGet(HttpServletRequest request,HttpServletResponse     response)throws IOException, ServletException{

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

    // connecting to database
    Connection con = null;    
    Statement stmt = null;
    ResultSet rs = null;

    try {
        Class.forName("com.mysql.jdbc.Driver");
        con =DriverManager.getConnection("jdbc:mysql://localhost:3306/emarnew", "root","12345");
        stmt = con.createStatement();
        rs = stmt.executeQuery("SELECT * FROM allpatientdetails WHERE patientname='Mr Hans Tan'");


    // displaying records
        while(rs.next()){
    JSONArray arrayObj=new JSONArray();
        String name="patientname"+rs.getObject(1).toString();
    arrayObj.add(name);

        arrayObj.add(rs.getObject(2).toString());
        arrayObj.add(rs.getObject(3).toString());
        arrayObj.add(rs.getObject(4).toString());
        arrayObj.add(rs.getObject(5).toString());
        arrayObj.add(rs.getObject(6).toString());
        arrayObj.add(rs.getObject(7).toString());
        arrayObj.add(rs.getObject(8).toString());
        String nik =arrayObj.toString();

           // fetch the parameters from client..

            final String user = request.getParameter("UID");
             // out.print(user);

             if("patients".equals(user))
               out.print(nik);
            else 
               out.println("fail");

         // out.print(nik);
           //   out.print("\t\t\t");
             //   out.print("<br>");

}
    } catch (SQLException e) {
        throw new ServletException("Servlet Could not display records.", e);
      } catch (ClassNotFoundException e) {
          throw new ServletException("JDBC Driver not found.", e);
        } finally {
            try {
                if(rs != null) {
                    rs.close();
                    rs = null;
                }
                if(stmt != null) {
                    stmt.close();
                    stmt = null;
                }
                if(con != null) {
                    con.close();
                    con = null;
                }
            } catch (SQLException e) {}
        }

        out.close();
    }

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException
{
    this.doGet(request, response);
}


}

And here is my android code import java.util.ArrayList; import java.util.List;

       import org.apache.http.HttpEntity;
        import org.apache.http.HttpResponse;
        import org.apache.http.NameValuePair;
       import org.apache.http.client.HttpClient;
        import org.apache.http.client.entity.UrlEncodedFormEntity;
          import org.apache.http.client.methods.HttpGet;
       import org.apache.http.client.methods.HttpPost;
             import org.apache.http.impl.client.DefaultHttpClient;
         import org.apache.http.message.BasicNameValuePair;
         import org.apache.http.protocol.HTTP;
        import org.apache.http.util.EntityUtils;

      import android.app.Activity;
       import android.os.Bundle;
       import android.util.Log;
       import android.widget.TextView;

     public class ClientActivity extends Activity 
      {
TextView tv;
public  StringBuffer buffer;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    tv= (TextView)findViewById(R.id.tv);

    try {
        HttpClient client = new DefaultHttpClient();  
        String postURL = "http://10.0.2.2:8080/nik/DBConnection?UID=patients";
        HttpPost post = new HttpPost(postURL);
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("UID", "patients"));
            //params.add(new BasicNameValuePair("pass", "xyz"));
            UrlEncodedFormEntity ent = new UrlEncodedFormEntity(params,HTTP.UTF_8);
            post.setEntity(ent);
            HttpResponse responsePOST = client.execute(post);  
            HttpEntity resEntity = responsePOST.getEntity();  
            if (resEntity != null) {    
                //Log.i("RESPONSE",EntityUtils.toString(resEntity));
                buffer = new StringBuffer("");
                buffer.append(EntityUtils.toString(resEntity));

            }

           String String1= buffer.toString();
           Log.i("string-----",String1);
           tv.append(String1);



    } catch (Exception e) {
        e.printStackTrace();
    }

    try {
        HttpClient client = new DefaultHttpClient();  
        String getURL = "http://10.0.2.2:8080/nik/DBConnection?UID=patients";
        HttpGet get = new HttpGet(getURL);
        HttpResponse responseGet = client.execute(get);  
        HttpEntity resEntityGet = responseGet.getEntity();  
        if (resEntityGet != null) {  
                    //do something with the response
                    Log.i("GET RESPONSE",EntityUtils.toString(resEntityGet));

                }
} catch (Exception e) {
    e.printStackTrace();
}
}
}

And this is the result that i am getting Mr Hans Tan","S2234567","75945422","20-11-1971","Chronic Hepatatis C","Copegus 400 mg","8","Ward3A-1,301" ,but i need to parse it so please any help will be appreciated .Thanks in advance

4
  • You could use see here if this could help herea link Commented Nov 18, 2011 at 6:43
  • Thanks i will try it should there be any format to send a data from server to android Commented Nov 18, 2011 at 6:57
  • There are plenty of questions already existed on SO for the same topic: Android JSON Parsing Commented Nov 18, 2011 at 7:21
  • still FYI, here is a detailed example: Android – JSON Parsing example Commented Nov 18, 2011 at 7:21

1 Answer 1

2

You'll use the JSONObject and/or JSONArray class to parse JSON data on android.

Basic usage goes like this:

JSONObject jsonObject = new JSONObject(myJsonDataString);

and

JSONArray jsonArray = new JSONArray(myJsonDataString);

You can find more info on the usage at the Android Developers Page, specifically here and here.

Be careful: data in the format: "[{'key':''value'}]" (I'm talking about the []'s) has to be parsed with JSONArray or you'll get a JSONException raised saying that your data isn't a JSONObject.

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.