解析JSON数组的各个元素

时间:2019-07-14 19:12:40

标签: android json

我想解析一个json数组,并在android中获取其各个元素。我的资产文件夹中有json文件。这是我的json类型:

{
   "name":"hello",
   "data":[1,2,3,4]
}

我想要获取“数据”键的元素,例如“ 1”,“ 2”,“ 3”和“ 4”,以便可以将其添加到数组列表中。文件名为gaitData.json 。我尝试了这种方法,但是它无法读取数组“数据”的各个元素。请帮忙!

     InputStream is = MainActivity.this.getAssets().open("gaitdata.json");
        int size = is.available();
        byte[] buffer = new byte[size];
        is.read(buffer);
        is.close();
        json=new String(buffer,"UTF-8");
        JSONObject object=new JSONObject(json);
        JSONArray hip_min=object.getJSONArray("hip_min");

在此步骤之后,我使用for循环迭代hip_min数组,但这也不起作用。

1 个答案:

答案 0 :(得分:1)

您可以获得这样的数组值,

String jsonString = getAssetJsonData("gaitdata.json");
ArrayList<String> list = new ArrayList<>();
try {
    JSONObject jsonObject = new JSONObject(jsonString);
    JSONArray jsonArray = (JSONArray) jsonObject.get("data");
    if (jsonArray != null) {
            for (int i = 0; i < jsonArray.length(); i++) {
                String str = (String) jsonArray.get(i).getValue();
                list.add(str);
            }
    }
} catch (JSONException e) {
       e.printStackTrace();
}

这是getAssetJsonData()方法,

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

        Log.e("data", json);
        return json;
    }