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>