Json parsing help!!

san**

Well-known member
  • Feb 21, 2012
    5,425
    8,375
    113
    kandy
    //JSONParser.java

    package com.ill.supportlibs;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;
    import java.util.List;

    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.ClientProtocolException;
    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.client.utils.URLEncodedUtils;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.json.JSONException;
    import org.json.JSONObject;

    import android.util.Log;

    public class JSONParser {

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

    // constructor
    public JSONParser() {

    }

    // function get json from url
    // by making HTTP POST or GET mehtod
    public JSONObject makeHttpRequest(String url, String method,
    List<NameValuePair> params) {

    // Making HTTP request
    try {

    // check for request method
    if(method == "POST"){
    // request method is POST
    // defaultHttpClient
    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost(url);
    httpPost.setEntity(new UrlEncodedFormEntity(params));

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

    }else if(method == "GET"){
    // request method is GET
    DefaultHttpClient httpClient = new DefaultHttpClient();
    String paramString = URLEncodedUtils.format(params, "utf-8");
    url += "?" + paramString;
    HttpGet httpGet = new HttpGet(url);

    HttpResponse httpResponse = httpClient.execute(httpGet);
    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 {
    jObj = new JSONObject(json);
    } catch (JSONException e) {
    Log.e("JSON Parser", "Error parsing data " + e.toString());
    }

    // return JSON String
    return jObj;

    }
    }
     

    san**

    Well-known member
  • Feb 21, 2012
    5,425
    8,375
    113
    kandy
    Android

    {
    // some code
    private String URL_PRODUCTS = "http://your_url";
    JSONParser jsonParser = new JSONParser(); //creating obj frm above class


    ArrayList<String> product_categoies = new ArrayList<String>();

    ArrayList<String> category_info = new ArrayList<String>();

    ListView listView;
    ProgressDialog pDialog; //spinner

    new GetCategories().execute();

    }

    // call to this from your java class.

    private class GetCategories extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
    super.onPreExecute();
    pDialog = new ProgressDialog(getActivity());
    pDialog.setMessage("loading categories..");
    pDialog.setCancelable(false);
    pDialog.show();

    }

    @Override
    protected Void doInBackground(Void... arg0) {
    ServiceHandler jsonParser = new ServiceHandler();
    String json2 = jsonParser.makeServiceCall(URL_PRODUCTS, ServiceHandler.GET);




    if (json2 != null) {
    try {
    JSONObject jsonObj = new JSONObject(json2);
    if (jsonObj != null) {
    JSONArray categories = jsonObj
    .getJSONArray("products");

    for (int i = 0; i < categories.length(); i++) {
    JSONObject catObj = (JSONObject) categories.get(i);
    product_categoies.add(catObj.getString("type"));
    category_info.add("tap to open");
    }
    }

    } catch (JSONException e) {
    System.out.println("Exception--- -- -- "+e.toString());
    }

    } else {
    Log.e("JSON Data", "Didn't receive any data from server!");
    }
    return null;
    }

    @Override
    protected void onPostExecute(Void result) {
    super.onPostExecute(result);
    if (pDialog.isShowing())
    pDialog.dismiss();
    setpropertise(); //post executing a method

    }

    }

    Manifest eke internet permission denna amathaka karannath epa
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    // sorry machan..full code eka nam danna hatiyak na..
     
    Last edited:

    san**

    Well-known member
  • Feb 21, 2012
    5,425
    8,375
    113
    kandy
    //class structure

    public class FirstFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    // some code
    //calling to the Async class
    }

    private class GetCategories extends AsyncTask<Void, Void, Void> {
    //network calling should be done under here

    }

    }


    mama use karla tiyenne Fragment class ekak..mokada mama sidebar ekak dala tiyana hinda..
    eth ubata meka activity class ekakath karanna puluwan..

    public class ItemsInCategory extends Activity{

    // some code
    //calling to the Async class

    protected void onCreate(Bundle savedInstanceState) {

    }


    private class GetListItems extends AsyncTask<Void, Void, Void> {
    //network calling should be done under here
    }
    }