- Home /
SerializationException: No map for object 'N', while trying to convert serializable object to string and vice versa.
I'm trying to save data on cloud using one string which contains all data which needs to be saved.
So I have found these 4 function on internet
static string ConvertToString()
{
GameState gameState = new GameState(gameMaster, passiveManager, playManager,
waveManager, turretData, upgradeManager, superPower);
byte[] buffer = SerializeToByteArray(gameState);
return System.Text.Encoding.UTF8.GetString(buffer);
}
static GameState ConvertToGameState(string Str)
{
byte[] bytes= System.Text.Encoding.UTF8.GetBytes(Str);
return DeserializeToGameState(bytes);
}
public static byte[] SerializeToByteArray(GameState gameState)
{
if (gameState == null)
{
return null;
}
var bf = new BinaryFormatter();
using (var ms = new MemoryStream())
{
bf.Serialize(ms, gameState);
return ms.ToArray();
}
}
public static GameState DeserializeToGameState(byte[] byteArray)
{
if (byteArray == null)
{
return null;
}
using (var memStream = new MemoryStream())
{
var binForm = new BinaryFormatter();
memStream.Write(byteArray, 0, byteArray.Length);
memStream.Seek(0, SeekOrigin.Begin);
var obj = (GameState)binForm.Deserialize(memStream);
return obj;
}
}
But when I try to run it there is error:
SerializationException: No map for object '201326592'.
GameState is [System.Serializable] ,and local save (with files) works fine.
Also while debugging I found that there are about 900 characters in that string ,but in byte array there are about 980 bytes...
When I am testing I'm using
string test = ConvertToString();
myGameState = ConvertToGameState(test);
So I'm trying to convert Game State to bytes and then bytes to string and vice versa.
When I tried to replace UTF-8 enconding with ASCII it has same number of characters in string and bytes by then occurs new error:
SerializationException: Invalid BinaryFormatter stream.
How to make it work?