0

我有個問題關於反序列化陣列(INT []) 我有一個數組int[*,*],我需要序列化和反序列化。如何用XMLSerializer做到這一點?的Xml解串器反序列化2維數組

int[,] B = new int[2,5];   
    public int[,] XMLIntArray 
    { 
     set { B = value; } 
     get { return B; } 
    } 
+0

那麼,你試過了什麼?它是如何失敗的? – svick

+0

我不知道我該怎麼做。任何想法(( – KAMAEL

+1

)不幸的是,你不能使用XmlSerializer進行多維數組,但你可以使用鋸齒形數組。'int [] [] B' –

回答

1

不幸的是多維數組序列不被XmlSerializer的或DataContractSerializer的唯一支持的方式(不是人類可讀的)是使用二進制序列等在該示例

public static void Main() 
    { 

     int[,] B = new int[2, 5]; 
     B[0, 0] = 5; 
     B[0, 1] = 3; 
     B[0, 2] = 5; 

     DeepSerialize<int[,]>(B,"test3"); 
     int[,] des= DeepDeserialize<int[,]>("test3"); 



    } 

public static void DeepSerialize<T>(T obj,string fileName) 
    { 
     //   MemoryStream memoryStream = new MemoryStream(); 
     FileStream str = new FileStream(fileName, FileMode.Create); 
     BinaryFormatter binaryFormatter = new BinaryFormatter(); 
     binaryFormatter.Serialize(str, obj); 
     str.Close(); 
    } 
    public static T DeepDeserialize<T>(string fileName) 
    { 
     //   MemoryStream memoryStream = new MemoryStream(); 
     FileStream str = new FileStream(fileName, FileMode.Open); 

     BinaryFormatter binaryFormatter = new BinaryFormatter(); 
     T returnValue = (T)binaryFormatter.Deserialize(str);    
     str.Close(); 
     return returnValue; 
    } 
+0

我不會說**唯一的方法**這是唯一的方法*你知道*。看到這個代碼:'int [,] B = new int [2,5] {{1,2,3,4,5},{6,7,8,9,10}}; var json = JsonConvert.SerializeObject(B); var B2 = JsonConvert.DeserializeObject (json);' –

+0

對不起,但我需要序列化爲XML – KAMAEL

+0

@Julie Shannon ty尋求幫助 – KAMAEL

0

不能serialze一個INT [,]但是你可以序列化一個int [] []。在序列化陣列之前,只需將它轉換成如下形式:

var my2dArray = new int[2,5]; 
var myJaggedArray = new int [2][]; 

for(int i = 0 ; i < my2DArray.GetLength(0) ; i ++) 
{ 
    myJaggedArray[i] = new int[my2DArray.GetLength(1)]; 

    for(int j = 0 ; j < my2DArray.GetLength(1) ; j ++) 
     myJaggedArray[i][j] = my2DArray[i,j]; 
}