Java 将 ArrayList 转换为字符串并返回 ArrayList?

Posted

技术标签:

【中文标题】Java 将 ArrayList 转换为字符串并返回 ArrayList?【英文标题】:Java convert ArrayList to string and back to 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]

【问题讨论】:

【参考方案1】:

你有两个选择:

    手动解析字符串并重新创建数组列表。这会很乏味。

    使用像 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) 

【讨论】:

以上是关于Java 将 ArrayList 转换为字符串并返回 ArrayList?的主要内容,如果未能解决你的问题,请参考以下文章

在java中将字符串转换为arraylist <Character>

怎么将arraylist转换为字符串数组

Java:ArrayList如何转换为JSON字符串呢

java求字符串中连续的数字为一个整体并返会连续的数字和共有多少个整数

将 Java 结果集转换为字符串数组

如何在 Kotlin 中将字符串数组 JSON 转换为 ArrayList?