[英]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.