473,498 Members | 1,671 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

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 45662
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
5805
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
11636
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
3207
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
2081
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
1751
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
8031
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
2412
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
6842
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
1312
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
7210
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...
1
6891
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
7381
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
5465
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
1
4916
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...
0
4595
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
0
3087
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
0
1424
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated ...
0
293
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence...

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.