FlexiJSon - 序列化反序列化

时间:2014-03-02 17:41:57

标签: java json serialization flexjson

我有两个不同的程序 - 一个序列化数据并将其保存到本地文件,另一个程序加载数据并使用它。问题在于反序列化不起作用 - 无论我如何序列化/反序列化数据,它所实现的结构都无法重建。

编辑:特别是从文件中加载序列化操作的结果。

编辑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动作的输出如下所示:

[
 [
   {"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)));

1 个答案:

答案 0 :(得分:0)

我的问题是两件事:

  1. 我排除了“* .class”。没有理由在我的情况下这样做,因此我删除了它。
  2. 我更改了deserialize部分以获取我的数据字符串,我使用nio读取数据,然后将其与StringBuilder连接,如下例所示:
  3. 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();
    }