【问题标题】:Java convert ArrayList to string and back to ArrayList?Java 将 ArrayList 转换为字符串并返回 ArrayList?
【发布时间】:2012-08-29 20:44:13
【问题描述】:

我想将 ArrayList 保存到 SharedPreferences 中,所以我需要将其转换为字符串并返回,这就是我正在做的:

// Save to shared preferences
SharedPreferences sharedPref = this.getPreferences(Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = this.getPreferences(Activity.MODE_PRIVATE).edit();
editor.putString("myAppsArr", myAppsArr.toString());
editor.commit();

我可以用String arrayString = sharedPref.getString("yourKey", null); 检索它,但我不知道如何将arrayString 转换回ArrayList。怎么办?


我的数组看起来像:

[item1,item2,item3]

【问题讨论】:

    标签: java android string list arraylist


    【解决方案1】:

    你有两个选择:

    1. 手动解析字符串并重新创建数组列表。这会很乏味。
    2. 使用像 Google 的 Gson 库这样的 JSON 库将对象存储和检索为 JSON 字符串。这是一个轻量级的库,备受推崇和流行。在您的情况下,这将是一个理想的解决方案,只需最少的工作。例如,

      // How to store JSON string
      Gson gson = new Gson();
      // This can be any object. Does not have to be an arraylist.
      String json = gson.toJson(myAppsArr);
      
      // How to retrieve your Java object back from the string
      Gson gson = new Gson();
      DataObject obj = gson.fromJson(arrayString, ArrayList.class);
      

    【讨论】:

    • 我把数组元素改成字符串了,现在肯定容易多了。
    • 没关系。使用 Gson,您可以将任何 java 对象转换为字符串,然后再将其转换回来。所以即使你有一个自定义对象的arraylist,也没有问题。
    • 它对ArrayList<SomeCustomObject>gson.fromJson(arrayString, ArrayList.class) 有效吗?
    【解决方案2】:

    试试这个

    ArrayList<String> array = Arrays.asList(arrayString.split(","))
    

    如果逗号用作分隔符并且没有任何项目有它,这将起作用。

    【讨论】:

      【解决方案3】:

      我最终使用了:

      ArrayList<String> appList = new ArrayList<String>(Arrays.asList(appsString.split("\\s*,\\s*")));
      

      但这并不适用于所有数组类型。此选项不同于:

      ArrayList<String> array = Arrays.asList(arrayString.split(","));
      

      第二个选项创建一个不可变数组。

      【讨论】:

        【解决方案4】:

        http://mjiayou.com/2015/07/22/exception-gson-internal-cannot-be-cast-to/ 页面包含以下内容:

        Type     type  = new TypeToken<List<T>>(){}.getType();
        List<T>  list  = gson.fromJson(jsonString, type)
        

        也许会有所帮助。

        【讨论】:

          【解决方案5】:
                //arraylist convert into String using Gson 
                Gson gson = new Gson();
                String data = gson.toJson(myArrayList);
                Log.e(TAG, "json:" + gson);
          
                //String to ArrayList
          
                Gson gson = new Gson();
                arrayList=gson.fromJson(data, new TypeToken<List<Friends>>()
                {}.getType());
          

          【讨论】:

            【解决方案6】:

            更新 Dhruv Gairola 对 Kotlin

            的回答
            val gson = Gson();
            val jsonString = gson.toJson(arrayList) 
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2019-09-04
              • 1970-01-01
              • 2012-04-28
              • 2013-02-26
              • 2021-07-12
              • 1970-01-01
              • 2015-07-22
              相关资源
              最近更新 更多