【问题标题】:Read JSON file to ArrayList将 JSON 文件读取到 ArrayList
【发布时间】:2016-10-27 12:20:18
【问题描述】:

我在从 JSON 文件加载对象时遇到问题,我的想法是将对象存储在 JSON 文件中并返回一个对象数组,有没有更简单的方法呢?或者有比 JSON 更好的解决方案吗?

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_student_list);


    TextView studentlistTextView =         (TextView)findViewById(R.id.studentlistTextView);
    ArrayList<students> studentArray = loadJSONFromAsset();
    try {
        studentlistTextView.setText(studentArray.get(0).getName());
    }catch(Exception e){
        e.printStackTrace();
    }

}
public ArrayList<students> loadJSONFromAsset() {
    ArrayList<students> studentArray = new ArrayList<>();
    String json = null;
    try {
        InputStream is = getAssets().open("jsonstudent");
        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;
    }
    try {
        JSONObject obj = new JSONObject(json);
        JSONArray m_jArry = obj.getJSONArray("students");

        for (int i = 0; i < m_jArry.length(); i++) {
            JSONObject jo_inside = m_jArry.getJSONObject(i);
            students student = new students();
            student.setName(jo_inside.getString("name"));
            student.setLastname(jo_inside.getString("lastname"));
            student.setNumber(jo_inside.getString("number"));




            studentArray.add(student);
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return studentArray;
}

}

这是我的 JSON 文件

 { "student" : [
 {"name" : "hans", "lastname" : "rosenboll", "number" : "5325235" }



]}

【问题讨论】:

  • 如果是完整的json,把obj.getJSONArray("students")改成obj.getJSONArray("student")试试?
  • 将json文件写入sdcard有什么目的?

标签: android json arraylist


【解决方案1】:

您可以使用 Gson 和 Shared Preference 将对象存储在 JSON 文件中并返回一个对象数组:

private final String PERSONAL_INFO = "personal_info";

public void putPersonalInfo(Profile info) {
        Gson gson = new Gson();
        String json = gson.toJson(info);
        getAppPreference().edit().putString(PERSONAL_INFO, json).commit();
    }

    public Profile getPersonalInfo() {
        Gson gson = new Gson();
        return gson.fromJson(getAppPreference().getString(PERSONAL_INFO, null), Profile.class);
    }

【讨论】:

    猜你喜欢
    • 2015-01-20
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    相关资源
    最近更新 更多