473,387 Members | 1,516 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,387 software developers and data experts.

serialize/deserialize object into string

Val
How can I serialize/deserialize an object into a string. Existing examples
seem to be showing this operation for files only.

Thansk
Jul 17 '06 #1
6 45633
What you are really asking is how to convert a stream (e.g. MemoryStream) to
a string. If you are using the BinaryFormatter the MemoryStream you serialize
to or from can be converted to / from a string as follows:

Stream to string:

byte[] b = MyMemoryStream.ToArray();
string s = System.Text.Encoding.UTF8.GetString(b);

String to stream:

string s = "whatever";
byte[] b = System.Text.Encoding.UTF8.GetBytes(s);
MemoryStream ms = new MemoryStream(b);

Cheers.
Peter
--
Co-founder, Eggheadcafe.com developer portal:
http://www.eggheadcafe.com
UnBlog:
http://petesbloggerama.blogspot.com


"Val" wrote:
How can I serialize/deserialize an object into a string. Existing examples
seem to be showing this operation for files only.

Thansk
Jul 17 '06 #2
Val <Va*@discussions.microsoft.comwrote:
How can I serialize/deserialize an object into a string. Existing examples
seem to be showing this operation for files only.
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

....

MemoryStream memoryStream = new MemoryStream();
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(memoryStream, targetObject);
string str = System.Convert.ToBase64String(memoryStream.ToArray ());

where targetObject is the object that you are trying to serialize.
--
Thomas T. Veldhouse
Key Fingerprint: 2DB9 813F F510 82C2 E1AE 34D0 D69D 1EDC D5EC AED1

Jul 17 '06 #3
Hey

Just try with this code.. it seriliaze an object to a string..

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

namespace SeriliazationEx
{
[Serializable()] //Set this attribute to all the classes that want to
serialize
public class Employee
{
public int EmpId;
public string EmpName;

//Default constructor
public Employee()
{
EmpId = 0;
EmpName = null;
}
}

public class ObjSerial
{
public static void Main(String[] args)
{
//Create a new Employee object
Employee mp = new Employee();
mp.EmpId = 10;
mp.EmpName = "Omkumar";

//Add code below for serialization
string s =
System.Text.Encoding.UTF8.GetString(getByteArrayWi thObject(mp));
Console.WriteLine(s);
}
public static byte[] getByteArrayWithObject(Object o)
{
/*

1) Create a new MemoryStream class with the CanWrite property set to true
(should be by default, using the default constructor).

2) Create a new instance of the BinaryFormatter class.

3) Pass the MemoryStream instance and your object to be serialized to the
Serialize method of the BinaryFormatter class.

4) Call the ToArray method on the MemoryStream class to get a byte array
with the serialized data.

*/

MemoryStream ms = new MemoryStream();
BinaryFormatter bf1 = new BinaryFormatter();
bf1.Serialize(ms, o);
return ms.ToArray();
}
}
}

Veera.
"Val" wrote:
How can I serialize/deserialize an object into a string. Existing examples
seem to be showing this operation for files only.

Thansk
Jul 17 '06 #4
Peter Bromberg [C# MVP] <pb*******@yahoo.nospammin.comwrote:
What you are really asking is how to convert a stream (e.g. MemoryStream) to
a string. If you are using the BinaryFormatter the MemoryStream you serialize
to or from can be converted to / from a string as follows:

Stream to string:

byte[] b = MyMemoryStream.ToArray();
string s = System.Text.Encoding.UTF8.GetString(b);

String to stream:

string s = "whatever";
byte[] b = System.Text.Encoding.UTF8.GetBytes(s);
MemoryStream ms = new MemoryStream(b);
That's a way which is almost guaranteed to lose data. Serialization
with BinaryFormatter produces opaque binary data, which may very well
not be a valid UTF-8 encoded string.

To convert arbitrary binary data to a string and back, I'd use
Convert.ToBase64String and Convert.FromBase64String.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too
Jul 17 '06 #5
Jon Skeet [C# MVP] <sk***@pobox.comwrote:
Peter Bromberg [C# MVP] <pb*******@yahoo.nospammin.comwrote:
>What you are really asking is how to convert a stream (e.g. MemoryStream) to
a string. If you are using the BinaryFormatter the MemoryStream you serialize
to or from can be converted to / from a string as follows:

Stream to string:

byte[] b = MyMemoryStream.ToArray();
string s = System.Text.Encoding.UTF8.GetString(b);

String to stream:

string s = "whatever";
byte[] b = System.Text.Encoding.UTF8.GetBytes(s);
MemoryStream ms = new MemoryStream(b);

That's a way which is almost guaranteed to lose data. Serialization
with BinaryFormatter produces opaque binary data, which may very well
not be a valid UTF-8 encoded string.

To convert arbitrary binary data to a string and back, I'd use
Convert.ToBase64String and Convert.FromBase64String.
I posted a code snippet using just what you discribe ... look elsewhere in
this thread. Encoding binary data as string often leaves "nulls" and other
characters that string code often considers "end of string" (like /0 in
ASCII), and thus should be avoided ... Base64 does a fine job of avioding it.

--
Thomas T. Veldhouse
Key Fingerprint: 2DB9 813F F510 82C2 E1AE 34D0 D69D 1EDC D5EC AED1

Jul 17 '06 #6
Jon,
Good point. It's so easy when you are focused on spitting out a quick
example for somebody, to pass over some basics.
Peter

--
Co-founder, Eggheadcafe.com developer portal:
http://www.eggheadcafe.com
UnBlog:
http://petesbloggerama.blogspot.com


"Jon Skeet [C# MVP]" wrote:
Peter Bromberg [C# MVP] <pb*******@yahoo.nospammin.comwrote:
What you are really asking is how to convert a stream (e.g. MemoryStream) to
a string. If you are using the BinaryFormatter the MemoryStream you serialize
to or from can be converted to / from a string as follows:

Stream to string:

byte[] b = MyMemoryStream.ToArray();
string s = System.Text.Encoding.UTF8.GetString(b);

String to stream:

string s = "whatever";
byte[] b = System.Text.Encoding.UTF8.GetBytes(s);
MemoryStream ms = new MemoryStream(b);

That's a way which is almost guaranteed to lose data. Serialization
with BinaryFormatter produces opaque binary data, which may very well
not be a valid UTF-8 encoded string.

To convert arbitrary binary data to a string and back, I'd use
Convert.ToBase64String and Convert.FromBase64String.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too
Jul 17 '06 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

7
by: Ian Tompsett | last post by:
H I was wondering if it possible for an object to serialize/deserialize itself from XML. I'd be guessing that it would need to use the XmlSerializer class, but that seems to want to create a...
2
by: Hollywood | last post by:
After doing a search through google's archives of this list, I didn't see what I was looking for so here goes... Is it possible to serialize/deserialize multiple objects from a single XML file? ...
0
by: Rajesh Cheedalla | last post by:
Hi All, I have a class View, defined with a property called Parameters which is of type class ControlParameters. View class is used serialize/deserialize view.xml. User may define a new class...
1
by: Roberto Carriquiry | last post by:
I am writeing a webService that needs to recieve a CDO.Person object as a parameter. but when I run it I have a runtime error. Cannot serialize member CDO.PersonClass.DataSource of type...
0
by: Fred Heida | last post by:
Hi Al, i have a funny problem.. i you can call it funny.. what i have is 2 assemblies, the first one does nothing other then Application.Run(new MyForm())
3
by: Eric | last post by:
I need to send an object between nodes on a network. Each node currently communicates fine with sending strings around but I can't figure out how to deserialize objects using the same basic...
2
by: alexandre martins | last post by:
Every time i try to make Deserialize the computer gives me the folowing error: "End of Stream encountered before parsing was complete" the code that i'm running is simple and is based on an...
8
by: Frank Rizzo | last post by:
How do I serialize Font object into a string that I can store in either INI file or the registry (I know it’s a bad thing, but need to do it nevertheless). Then, also, how do I deserialize it from...
0
by: Redowl | last post by:
Hi, I am trying to serialize a business object using xml generated by a FOR XML query and the resulting xml has no root element. I have created my business object using the schema returned from...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.