[英]Xml Deserializer to deserialize 2-Dimensional Array
I have a problem about deserialize an array ( int[ , ]) I have an array int[*,*]
and i need to serialize and deserialize it. 我有一个反序列化数组的问题(int [ , ])我有一个数组
int[*,*]
,我需要对其进行序列化和反序列化。 How to do it with XMLSerializer?? 如何使用XMLSerializer做到这一点?
int[,] B = new int[2,5];
public int[,] XMLIntArray
{
set { B = value; }
get { return B; }
}
Unfortunately multidimensional arrays serialization are not supported by XmlSerializer or DataContractSerializer the only way (not human readable) is to use binary serialization like in this example 不幸的是,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;
}
You cannot serialze a int[,] but you can serialize a int[][]. 您不能序列化一个int [,],但是可以序列化一个int [] []。 Before serializing your array, just convert it like that:
在序列化数组之前,只需像这样转换它:
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];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.