【问题标题】:Android - save custom model ArrayList to JSONAndroid - 将自定义模型 ArrayList 保存为 JSON
【发布时间】:2017-05-11 09:19:32
【问题描述】:

我创建了一个 ArrayList,我需要将它转换为 JSONarray:

这就是我的ArrayList<model> 中的对象的样子:

modelList.add(new model("String", 9.99 /*Double*/, null /*Date*/, R.drawable.drawable, R.color.color, 1 /*int*/, 0 /*int*/));
...

这是我迄今为止尝试过的:

public void saveArrayListtoJSON(ArrayList<Model> modelList) {
        JSONArray myJSONArray = new JSONArray();
            JSONObject obj = new JSONObject();
            obj.put("key", modelList);
            myJSONArray.put(obj);
        }
    }

【问题讨论】:

    标签: java android json arraylist


    【解决方案1】:

    你可以这样试试:

      public void saveArrayListtoJSON(ArrayList<Model> modelList) {
            JSONArray myJSONArray = new JSONArray();
            JSONObject obj = new JSONObject();
            for(Model model : modelList){
                try {
                    obj.put("key", model);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                myJSONArray.put(obj);
            }
        }
    

    恢复任何错误。

    【讨论】:

      【解决方案2】:

      将此 Gradle 添加到您的 build.gradle compile 'com.google.code.gson:gson:2.7'

      然后

      String str = new Gson().toJson(modelList);
      JSONObject jsonObject = new JSONObject(str);
      

      【讨论】:

        【解决方案3】:

        你可以试试下面的代码:

            public void saveArrayListtoJSON(ArrayList<Model> modelList) {
            JSONArray myJSONArray = new JSONArray();
                JSONObject obj = new JSONObject();
                JSONArray array = new JSONArray();
                for (Model model:modelList) {
                    array.put(model.getJson());
                }
                obj.put("key", array);
                myJSONArray.put(obj);
            }
        }
        

        我想 getJson() 方法是你的方法,它返回 JSON 对象,它呈现模型对象

        【讨论】:

          【解决方案4】:

          您也可以使用 gson,只需将数组列表作为参数。但是请注意,如果不使用瞬态删除模型中不可序列化的对象,则模型的所有元素都需要可序列化

          Gson - putting and getting ArrayList of composite objects

          看看这里: Google Gson - deserialize list<class> object? (generic type)

          【讨论】:

          • 感谢蒂莫的回答。你能给我提供一个关于如何使用 Gson 保存和检索 arrayList 的示例吗? List&lt;Model&gt; modelList = new Gson().fromJson(jsonArray, Model.class); 对我不起作用。我得到incompatible types
          • stackoverflow.com/questions/5554217/… 或 Model[] models = new Gson().fromJson(jsonArray,Model[].class);
          【解决方案5】:

          您可以使用 Gson 将 ArrayList 转换为 JSON 数组

          Gson gson = new Gson();
          String json = gson.toJson(yourArraylist);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-12-26
            • 2020-05-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-09-12
            相关资源
            最近更新 更多