簡體   English   中英

將ArrayList轉換為String,然后將String轉換回ArrayList

[英]Converting ArrayList to String and converted String back to ArrayList

我處於需要在網絡中發送arraylist但需要將其轉換為字符串形式的情況。

現在在目標位置,我想將此String轉換為ArrayList以訪問各個元素。

請告訴我如何將轉換后的String(從ArrayList)轉換回ArrayList。

ArrayList是什么? 如果元素是字符串或整數,則只需使用一些唯一的分隔符將它們連接起來,然后在另一側拆分回數組。

如果要發送任意Serializable對象的ArrayList ,則必須對其進行序列化,例如,使用Java serialization 但是,這將產生byte[]數組而不是String。 如果您受制於文本協議,則必須使用Base64編碼或類似方法。

這取決於是否可以在數組列表中提供對象的精確字符串表示形式。

下一個問題是:為什么它必須是arraylist的字符串表示形式?

就是說,如果確實需要使用字符串表示形式,則JSON可能會為您提供幫助,即您將數組列表轉換為JSON表示形式並返回。 有許多JSON框架,例如GSON,JSON-simple等。

  private string ArrayListToString(System.Collections.ArrayList list)
        {
            string CStr = "";

            foreach (string str in list)
            {
                CStr += str;
                CStr += "<b>";
            }

            return CStr;
        }

        private System.Collections.ArrayList ArrayListToString(string CStr)
        {
            System.Collections.ArrayList list = new System.Collections.ArrayList();
            string[] seperator = { "<b>" };
            string[] words = CStr.Split(seperator, StringSplitOptions.RemoveEmptyEntries);

            foreach (string str in words)
            {
                list.Add(str);
            }

            return list;
        }

我寧願不使用程序語言指定的二進制序列化。 將來會因某些版本問題而卡住。

您可以使用JSON格式,使用JSONArray.toString和JSONArray.fromObject(String)進行串行/反序列化

如果您需要速度和空間方面的性能,

我建議使用Google Protocol Buffers,它是一種以有效但可擴展的格式編碼結構化數據的方法。 Google幾乎所有內部​​RPC協議和文件格式都使用協議緩沖區。

與XML相比,協議緩沖區在序列化結構化數據方面具有許多優勢。 協議緩沖區:

* are simpler
* are 3 to 10 times smaller
* are 20 to 100 times faster
* are less ambiguous
* generate data access classes that are easier to use programmatically

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM