我想解析一个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数组,但这也不起作用。
答案 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;
}