2014-03-02 57 views
0

我有兩個不同的程序 - 一個序列化數據並將其保存到本地文件,另一個程序加載數據並使用它。問題在於反序列化不起作用 - 無論如何對數據進行序列化/反序列化,都無法重構它所實現的相同結構。FlexiJSon - 序列化反序列化

編輯:特別是從文件加載序列化操作結果的問題。

EDIT2:我得到的例外是線程 異常「主要」 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..} 
] 
] 

和DESE rializing我使用:

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))); 
+0

什麼用的'「value.values」'路徑,我沒有看到這在序列化? – Smutje

+0

它應該使數據結構能夠理解Images類 –

回答

0

在我的情況的問題是兩件事情:

  1. 我排除了 「的* .class」。我沒有理由這樣做,因此我將其刪除。
  2. 我在反序列化部分改變讓我的一串數據,我使用數據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(); 
}