如何在Android中解析JSON数据 [英] How to parse JSON data in Android

查看:76
本文介绍了如何在Android中解析JSON数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

可能重复:
在Android中发送和解析JSON

Possible Duplicate:
Sending and Parsing JSON in Android

我正在从服务器获取JSON数据,并且已经通过代码获取了JSON数据.但是我不知道如何解析它.

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.

这是我的服务器代码,我正在从mysql数据库中获取数据,然后发送到android 设备

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);
}


}

这是我的android代码 导入java.util.ArrayList; 导入java.util.List;

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();
}
}
}

这就是我得到Hans Tan先生," S2234567," 75945422," 20-11-1971,"慢性肝炎C," Copegus 400 mg," 8,"的结果Ward3A-1,301,但我需要解析它,因此请您提供任何帮助.谢谢

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

推荐答案

您将使用JSONObject和/或JSONArray类在android上解析JSON数据.

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

基本用法如下:

JSONObject jsonObject = new JSONObject(myJsonDataString);

JSONArray jsonArray = new JSONArray(myJsonDataString);

您可以在Android开发人员页面上找到有关用法的更多信息,特别是此处此处.

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

注意:必须使用JSONArray解析以下格式的数据:"[{'key':'value'}]"(我是在谈论[])否则您会收到一个JSONException异常,说您的数据不是JSONObject.

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.

这篇关于如何在Android中解析JSON数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆