>我有两个不同的程序 - 一个序列化数据并将其保存到本地文件,另一个程序加载数据并使用它。问题是反序列化不起作用 - 无论我如何序列化/反序列化数据,它被实现的相同结构都无法重建。
编辑:特别是从文件加载序列化操作结果的问题。
编辑2:我得到的例外是线程"main"中的异常 java.lang.ClassCastException: java.util.ArrayList 不能强制转换为 myImage
我使用深度序列化,如下所示:
ArrayList<ArrayList<Images>> data;
...filling the data object with my data...
String serialized = new JSONSerializer().exclude("*.class")
.deepSerialize(data);
serealize action的输出如下所示:
[
[
{"datetaken":"date-time","filePath":"a-file-path","folderPath":"a-folder-path","meta1":"val1","meta2":"val2"}
]
[
{more..},
{more..}
]
]
对于反序列化,我使用:
ArrayList<ArrayList<TrimmedImageData>> data;
...some initializing code...
data = (ArrayList<List<Images>>) new JSONDeserializer<ArrayList<List<Images>>>()
.use("value.values", myImage.class)
.deserialize(new BufferedReader(new FileReader(
resultsFile)));
在我的情况下,问题有两件事:
- 我排除了"*.class"。在我的情况下没有充分的理由这样做,因此我删除了它。
- 我在反序列化部分进行了更改以获取我的数据的字符串,我使用 nio 读取数据,然后使用 StringBuilder 连接它,如以下示例所示:
try { List<String> res = Files.readAllLines(Paths.get(myObject), StandardCharsets.UTF_8); StringBuilder anotherTest = new StringBuilder(); for(String str : res) { anotherTest.append(str); } serializedString = anotherTest.toString(); } catch (IOException e) { e.printStackTrace(); }