Java convert ArrayList to string and back to ArrayList?

后端 未结 6 1354
一个人的身影
一个人的身影 2020-12-29 11:30

I wanted to save an ArrayList to SharedPreferences so I need to turn it into a string and back, this is what I am doing:

// Save to shared preferences
Shared         


        
相关标签:
6条回答
  • 2020-12-29 11:39

    I ended up using:

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

    This doesn't work for all array types though. This option differs from:

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

    on that the second option creates an inmutable array.

    0 讨论(0)
  • 2020-12-29 11:49

    You have 2 choices :

    1. Manually parse the string and recreate the arraylist. This would be pretty tedious.
    2. Use a JSON library like Google's Gson library to store and retrieve objects as JSON strings. This is a lightweight library, well regarded and popular. It would be an ideal solution in your case with minimal work required. e.g.,

      // 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);
      
    0 讨论(0)
  • 2020-12-29 11:49

    Update to Dhruv Gairola's answer for Kotlin

    val gson = Gson();
    val jsonString = gson.toJson(arrayList) 
    
    0 讨论(0)
  • 2020-12-29 11:55
          //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());
    
    0 讨论(0)
  • 2020-12-29 11:59

    Try this

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

    This will work if comma is used as separator and none of the items have it.

    0 讨论(0)
  • 2020-12-29 11:59

    The page http://mjiayou.com/2015/07/22/exception-gson-internal-cannot-be-cast-to/ contains the following:

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

    perhaps it will be helpful.

    0 讨论(0)
提交回复
热议问题