Java 将字符串列表存储为人类可读的路径

Java 将字符串列表存储为人类可读的路径,java,string,list,serialization,xpath,Java,String,List,Serialization,Xpath,我需要在Java中将字符串列表存储到单个字段中。顺序很重要,我更希望它以人类可读的格式存储 完美的解决方案是将其像xPath一样存储,但我只知道用于将复杂xml文件编译为xPath的库,而不是字符串列表 我自己编写的解决方案很容易变得过于复杂,因为我希望支持包含任何字符的字符串,包括我用作分隔符的字符串 我目前以这种方式使用序列化: String[] items = new String[3]; items[0] = item1; items[1] = item2; items[2] = ite

我需要在Java中将字符串列表存储到单个字段中。顺序很重要,我更希望它以人类可读的格式存储

完美的解决方案是将其像xPath一样存储,但我只知道用于将复杂xml文件编译为xPath的库,而不是字符串列表

我自己编写的解决方案很容易变得过于复杂,因为我希望支持包含任何字符的字符串,包括我用作分隔符的字符串

我目前以这种方式使用序列化:

String[] items = new String[3];
items[0] = item1;
items[1] = item2;
items[2] = item3;
byte[] bytes = SerializationUtils.serialize(items);
System.out.println("Serialized:\n"+Arrays.toString(bytes));

String[] read = (String[]) SerializationUtils.deserialize(bytes);
System.out.println("Read:");
for(String s : read) {
    System.out.println(s);
}
输出:

String[] items = new String[3];
items[0] = item1;
items[1] = item2;
items[2] = item3;
byte[] bytes = SerializationUtils.serialize(items);
System.out.println("Serialized:\n"+Arrays.toString(bytes));

String[] read = (String[]) SerializationUtils.deserialize(bytes);
System.out.println("Read:");
for(String s : read) {
    System.out.println(s);
}

这是可行的,但除了生成很长的字符串外,它还生成非人类可读的字符串

如何以一种人类可读的方式最好地存储此路径,并尽可能减少代码中的复杂度

解决方案

这是我的解决方案,使用ct建议的
OstermillerUtils
(谢谢!)

String item1=“number1”;
String item2=“number/2”;
String item3=“number\\3”;
字符串item4=“//编号/4\\”;
字符串item5=“,num\”ber5;
String item6=“数字,6”;
字符串[]项=新字符串[6];
项目[0]=项目1;
项目[1]=项目2;
第[2]项=第3项;
第[3]项=第4项;
第[4]项=第5项;
第[5]项=第6项;
System.out.println(“测试值”);
用于(字符串s:项){
系统输出打印项次;
}
StringWriter编写器=新的StringWriter();
CSVPrinter打印机=新的CSVPrinter(writer);
printer.changeDelimiter('/');
打印机。写入(项目);
System.out.println(“持久化:\n\t”+writer.toString());
字符串[][]结果=CSVParser.parse(writer.toString(),'/');

对于(int j=0;jJAXB只使用注释就可以了。最好是当您有一个带有列表字段的容器类时。然后您就可以得到XML。

那么您想将字符串数组序列化和反序列化为字符串并返回吗?请看一看-它可以使用任意delimeter对数组进行序列化和反序列化。

您所说的
人类可读格式是什么意思
?不是上面打印的输出,而是类似xPath的东西,例如
item1/item2/item3
。上面的输出是针对
数组的。toString(字节)
。您正在打印字节数组。您希望打印什么?它以序列化的方式打印数组,我可以存储、检索和反序列化。我希望有一种简单的方法以人类可读的格式完全执行相同的操作。这正是我要找的!谢谢!:)没问题-很高兴它有帮助。