Abhe Jee
Abhe Jee

Reputation: 1

Json Parsin in android

http://www.taxmann.com/TaxmannWhatsnewService/Services.aspx?service=getStatutesTabNews

This is my web service. I want to parse it and I want show news_id and news title. Please post, showing me how to parse it so that I can store all the values in a string. I tried but am getting Exception ..

try
    {
        HttpClient httpclient = new DefaultHttpClient();

        HttpPost httppost = new HttpPost("http://www.taxmann.com/TaxmannWhatsnewService/Services.aspx?service=getStatutesTabNews");
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();
    }catch(Exception e)
    {
        Log.e("log_tag", "Error in http connection"+e.toString());
    }

    //convert response to string
    try
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"),8);
        sb = new StringBuilder();
        sb.append(reader.readLine() + "\n");
        String line="0";
        while ((line = reader.readLine()) != null) 
        {
            sb.append(line + "\n");
        }
        is.close();
        result=sb.toString();
    }catch(Exception e)
    {
        Log.e("log_tag", "Error converting result "+e.toString());
    }


//  String name;
    try
    {
        jArray = new JSONArray(result);
        JSONObject json_data=null;
        for(int i=0;i<jArray.length();i++)
        {
            HashMap<String, String> map = new HashMap<String, String>();
            json_data = jArray.getJSONObject(i);

//              name=json_data.getString("name");
            map.put("id",  String.valueOf(json_data.getString("news_id")));

            map.put("title",json_data.getString("news_title"));
            map.put("shortdescription",json_data.getString("news_short_description"));
            map.put("date",json_data.getString("news_date"));
            mylist.add(map);
        }


    }
        catch(Exception e)
    {
    }
}

Upvotes: 0

Views: 320

Answers (2)

Vivek Kumar Srivastava
Vivek Kumar Srivastava

Reputation: 2158

You can parse using Gson parser. So first download gson-1.1.jar file from http://findjar.com/jar/com/google/code/gson/gson/1.1/gson-1.1.jar.html

and then add jar file into your project build path then use the below code for parsing (Simple replace your parsing code with below code)

  try
    {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://www.taxmann.com/TaxmannWhatsnewService/Services.aspx?service=getStatutesTabNews");
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        String  data = EntityUtils.toString(entity);

        Gson gson = new Gson();
        Type collectionType = new TypeToken<List<NewsData>>(){}.getType();
        List<NewsData> details = gson.fromJson(data, collectionType);
    }
    catch (Exception e) 
    {
        Log.i("error","error");
        e.printStackTrace();
    }

bean for above code is

public class NewsData
{
    private String news_id = null;
    private String news_title = null;
    private String news_short_description = null; 
    private String news_date = null;

    public String getNews_id()
    {
        return news_id;
    }
    public void setNews_id(String newsId)
    {
        news_id = newsId;
    }
    public String getNews_title()
    {
        return news_title;
    }
    public void setNews_title(String newsTitle)
    {
        news_title = newsTitle;
    }
    public String getNews_short_description()
    {
        return news_short_description;
    }
    public void setNews_short_description(String newsShortDescription)
    {
        news_short_description = newsShortDescription;
    }
    public String getNews_date()
    {
        return news_date;
    }
    public void setNews_date(String newsDate)
    {
        news_date = newsDate;
    }
}

and add internet permission in your manifest

<uses-permission
        android:name="android.permission.INTERNET" />

I hope this will help you.

Upvotes: 2

Herry
Herry

Reputation: 7087

if you still not get your result you can use below code .

static InputStream is = null;
    static JSONObject jObj = null;
    static JSONArray jsonArray=null;
    static String json = "";



mJsonArray=getJSONFromUrl(url);
        try{
        JSONObject mJsonObject=null;
        for(int i =0;i<mJsonArray.length();i++){
            if(!mJsonArray.isNull(i)){
                 HashMap<String, String> map = new HashMap<String, String>();
                 mJsonObject=mJsonArray.getJSONObject(i);
                 map.put("title",mJsonObject.getString("news_title"));
                 map.put("shortdescription",mJsonObject.getString("news_short_description"));
                 map.put("date",mJsonObject.getString("news_date"));
            //add you map in to list
            }
        }
        }catch(JSONException jexc){
            jexc.printStackTrace();
        }




public JSONArray getJSONFromUrl(String url) {

          // Making HTTP request
          try {
              // defaultHttpClient
              DefaultHttpClient httpClient = new DefaultHttpClient();
              HttpPost httpPost = new HttpPost(url);

              HttpResponse httpResponse = httpClient.execute(httpPost);
              HttpEntity httpEntity = httpResponse.getEntity();
              is = httpEntity.getContent();            

          } catch (UnsupportedEncodingException e) {
              e.printStackTrace();
          } catch (ClientProtocolException e) {
              e.printStackTrace();
          } catch (IOException e) {
              e.printStackTrace();
          }

          try {
              BufferedReader reader = new BufferedReader(new InputStreamReader(
                      is, "iso-8859-1"), 8);
              StringBuilder sb = new StringBuilder();
              String line = null;
              while ((line = reader.readLine()) != null) {
                  sb.append(line + "\n");
              }
              is.close();
              json = sb.toString();
          } catch (Exception e) {
              Log.e("Buffer Error", "Error converting result " + e.toString());
          }

          // try parse the string to a JSON object
          try {
            jsonArray =new JSONArray(json);
          } catch (JSONException e) {
              Log.e("JSON Parser", "Error parsing data " + e.toString());
          }

          // return JSON String
          return jsonArray;

      }

Upvotes: 1

Related Questions