【问题标题】:How to create Generic JSON Parser for android如何为 android 创建通用 JSON 解析器
【发布时间】:2013-07-23 06:19:02
【问题描述】:

是否可以创建更通用的 JSON 解析器?

代码中没有提及任何父节点或子节点标记,我需要解析 JSON 文件并将其显示在 Android Activity 中。

问候, 迪帕克·克里希南

【问题讨论】:

标签: android json parsing


【解决方案1】:

你可以定义自己的json解析器类-

public class JSONParser {

    static InputStream is = null;
    static JSONObject jObj = null;
    static JSONArray jsonArray = null;
    static String json = "";
    // constructor
    public JSONParser() {

    }    
        public JSONArray getJSONFromUrl(String url, List<NameValuePair> params) {    
            System.out.println("url:: "+url );
            System.out.println("params:: "+ params +" " +params.get(0) );
            // Making HTTP request
            try {
                // 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();

            } 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);
                }
                is.close();
                json = sb.toString();
                //Log.e("JSON::: ", json);
            } catch (Exception e) {
                Log.e("Buffer Error", "Error converting result " + e.toString());
            }      

            // try parse the string to a JSON object
            try {
                if(!json.equals("null")){
                    jsonArray = new JSONArray(json);
                     Log.d("jsonArray:: ",  jsonArray+"");
                }else{
                    jsonArray = null;
                }

            } catch (JSONException e) {
                Log.e("JSON Parser", "Error parsing data " + e.toString());
            }


            // return JSON String
            return jsonArray;

        }

      }

你的调用类就像-

public class UserFuctions {
    private JSONParser jsonParser;

     // constructor
    public UserFuctions(){
        jsonParser = new JSONParser();
    }

    private static String HOST_URL = "http://100.43.0.21/pharmacy";
    public static final String FS  = File.separator;
    private static String genericListByNameSearchURL    = HOST_URL+FS +"getGenericByName.php";

    /**
     * 
     * function make Login Request
     * @param email
     * @param password
     * */

    public JSONArray getGenericByName(String genName){
        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();        
        params.add(new BasicNameValuePair("genName", genName));       
        JSONArray json = jsonParser.getJSONFromUrl(getGenericByName, params);

        return json;
    }


}

【讨论】:

  • 嗨@Mohammod Hossain,在我的场景中,我需要解析Android Asset 文件夹中的.json 文件。我对这个解析和android非常陌生。如果您为此场景提供任何输入,这将非常有帮助。提前致谢。\
  • @Mohammod Hossain 我认为您必须在 jsonParser.getJSONFromUrl(getGenericByName, params); 中传递 genericListByNameSearchURL 而不是 getGenericByName
猜你喜欢
  • 1970-01-01
  • 2017-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-18
  • 1970-01-01
  • 1970-01-01
  • 2017-11-07
相关资源
最近更新 更多