How can I parse a local JSON file from assets folder into a ListView? How can I parse a local JSON file from assets folder into a ListView? json json

How can I parse a local JSON file from assets folder into a ListView?

As Faizan describes in their answer here:

First of all read the Json File from your assests file using below code.

and then you can simply read this string return by this function as

public String loadJSONFromAsset() {    String json = null;    try {        InputStream is = getActivity().getAssets().open("yourfilename.json");        int size = is.available();        byte[] buffer = new byte[size];;        is.close();        json = new String(buffer, "UTF-8");    } catch (IOException ex) {        ex.printStackTrace();        return null;    }    return json;}

and use this method like that

    try {        JSONObject obj = new JSONObject(loadJSONFromAsset());        JSONArray m_jArry = obj.getJSONArray("formules");        ArrayList<HashMap<String, String>> formList = new ArrayList<HashMap<String, String>>();        HashMap<String, String> m_li;        for (int i = 0; i < m_jArry.length(); i++) {            JSONObject jo_inside = m_jArry.getJSONObject(i);            Log.d("Details-->", jo_inside.getString("formule"));            String formula_value = jo_inside.getString("formule");            String url_value = jo_inside.getString("url");            //Add your values in your `ArrayList` as below:            m_li = new HashMap<String, String>();            m_li.put("formule", formula_value);            m_li.put("url", url_value);            formList.add(m_li);        }    } catch (JSONException e) {        e.printStackTrace();    }

For further details regarding JSON Read HERE

{ // json object node    "formules": [ // json array formules    { // json object       "formule": "Linear Motion", // string      "url": "qp1"    }

What you are doing

  Context context = null; // context is null     try {        String jsonLocation = AssetJSONFile("formules.json", context);

So change to

   try {        String jsonLocation = AssetJSONFile("formules.json", CatList.this);

To parse

I believe you get the string from the assests folder.

try{String jsonLocation = AssetJSONFile("formules.json", context);JSONObject jsonobject = new JSONObject(jsonLocation);JSONArray jarray = (JSONArray) jsonobject.getJSONArray("formules");for(int i=0;i<jarray.length();i++){JSONObject jb =(JSONObject) jarray.get(i);String formula = jb.getString("formule");String url = jb.getString("url");}} catch (IOException e) {        e.printStackTrace();} catch (JSONException e) {        e.printStackTrace();}

With Kotlin have this extension function to read the file return as string.

fun AssetManager.readAssetsFile(fileName : String): String = open(fileName).bufferedReader().use{it.readText()}

Parse the output string using any JSON parser.