繁体   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