当前位置: 首页 > 知识库问答 >
问题:

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

澹台建华
2023-03-14

我需要在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);
}

输出:

-84, -19, 0, 5, 117, 114, 0, 19, 91, 76, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 83, 116, 114, 105, 110, 103, 59, -83, -46, 86, -25, -23, 29, 123, 71, 2, 0, 0, 120, 112, 0, 0, 0, 3, 116, 0, 7, 110, 117, 109, 98, 101, 114, 49, 116, 0, 8, 110, 117, 109, 98, 101, 114, 47, 50, 116, 0, 8, 110, 117, 109, 98, 101, 114, 92, 51代码

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

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

解决方案

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

String item1="number1";
String item2="number/2";
String item3="number\\3";
String item4="//number/4\\";
String item5=",num\"ber5,";
String item6="number,6";
String[] items = new String[6];
items[0] = item1;
items[1] = item2;
items[2] = item3;
items[3] = item4;
items[4] = item5;
items[5] = item6;

    System.out.println("Test values");
for(String s : items) {
    System.out.println(s);
}

StringWriter writer = new StringWriter();
CSVPrinter printer = new CSVPrinter(writer);
printer.changeDelimiter('/');
printer.write(items);
System.out.println("Persisted:\n\t"+writer.toString());

String[][] results = CSVParser.parse(writer.toString(), '/');
for (int j=0; j<results[0].length; j++){
    System.out.println(results[0][j]);
}

共有2个答案

衡子安
2023-03-14

JAXB只使用注释就可以了。当您有一个带有列表字段的容器类时,效果最好。然后得到XML。

梁英喆
2023-03-14

所以你想序列化和反序列化字符串数组到字符串并返回?看看http://ostermiller.org/utils/CSV.html-它可以使用任意分隔符序列化和反序列化数组。

 类似资料:
  • 我正在尝试将我上传到Tomcat的文件的路径存储到我的MySQL数据库中。我已经存储了名为filepath的字符串的路径,但是当我执行程序时,我收到了以下错误: “您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在第1行的':\User\Nick\Desktop\bot.png)'附近使用的正确语法”我使用的代码的一部分: 我想问题与路径的格式有关,但我对java很陌生,所以我

  • 问题内容: 我试图在一个ViewController中保存用户的坐标,以便可以将其用于创建可以在另一个ViewController中显示的注释。 在存储我正在使用代码的坐标的视图控制器中 在显示注释的地图视图控制器中,我尝试使用代码获取坐标 告诉我,type 的值改为type 的值。 那么如何将坐标转换为type的值? 问题答案: 这样,您可以将“位置”存储到: 之后,您可以通过以下方式访问它:

  • 问题内容: 给定python字符串列表,如何自动将其转换为正确的类型?意思是,如果我有: 我希望将其转换为列表 其中第一个元素是stuntng,第二个元素是int,第三个元素是float,第四个元素是int。 我怎样才能做到这一点?谢谢。 问题答案: import ast

  • 方法(下面)是一个类型,我用作参数的类是一个。我想知道我选角的方式是否管用: 这就是方法: 此URL指向类: 我把它放进了粘贴箱,因为课程太长了。

  • 问题内容: 我有一个清单 我想将其转换为字典 我该怎么做? 问题答案: 采用: 返回: 如果需要整数,请在以下位置更改分配: 这将给出: