C# 用于反序列化二维数组的Xml反序列化器

C# 用于反序列化二维数组的Xml反序列化器,c#,xml,serialization,multidimensional-array,deserialization,C#,Xml,Serialization,Multidimensional Array,Deserialization,我对反序列化数组(int[,])有问题 我有一个数组int[*,*],我需要对它进行序列化和反序列化。如何使用XMLSerializer int[,] B = new int[2,5]; public int[,] XMLIntArray { set { B = value; } get { return B; } } 不幸的是,XmlSerializer或DataContractSerializer不支持多维数组

我对反序列化数组(int[,])有问题 我有一个数组
int[*,*]
,我需要对它进行序列化和反序列化。如何使用XMLSerializer

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

不幸的是,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; 
    }  
publicstaticvoidmain()
{
int[,]B=新的int[2,5];
B[0,0]=5;
B[0,1]=3;
B[0,2]=5;
深度序列化(B,“测试3”);
int[,]des=深度反序列化(“test3”);
}
公共静态void DeepSerialize(T obj,字符串文件名)
{
//MemoryStream MemoryStream=新的MemoryStream();
FileStream str=newfilestream(文件名,FileMode.Create);
BinaryFormatter BinaryFormatter=新的BinaryFormatter();
序列化(str,obj);
str.Close();
}
公共静态T DeepDeserialize(字符串文件名)
{
//MemoryStream MemoryStream=新的MemoryStream();
FileStream str=newfilestream(文件名,FileMode.Open);
BinaryFormatter BinaryFormatter=新的BinaryFormatter();
T returnValue=(T)binaryFormatter.Deserialize(str);
str.Close();
返回值;
}  

不能序列化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]; 
}
var my2dArray=newint[2,5];
var myJaggedArray=新整数[2][];
for(int i=0;i
那么,您尝试了什么?它是怎么失败的?我不知道我怎么能做到这一点。任何想法((不幸的是,您不能将XmlSerializer用于多维数组。但是您可以使用锯齿数组。
int[]B
我不会说唯一的方法是您知道的唯一方法。请参阅以下代码:
int[,]B=newint[2,5]{{1,2,3,4,5},{6,7,8,9,10};var json=jsoninvert.serializedObject(B);var B2=JsonConvert.DeserializeObject(json);
对不起,我需要序列化到XML@Julie棚户区求助