Click here to Skip to main content
15,881,791 members
Articles / Mobile Apps / Windows Phone 7
Tip/Trick

Work-Around for DataContractJsonSerializer ArgumentNullExceptions

Rate me:
Please Sign up or sign in to vote.
4.25/5 (3 votes)
24 Oct 2010CPOL 23.7K   1   5
Stop trailling nulls from preventing deserialization.
If you've tried using a DataContractJsonSerializer or a DataContractSerializer with Push Notification for the Windows Phone, you may have experienced an ArgumentNullException during deserialization. This can happen because the MemoryStream is buffered with null characters '\0' that prevent deserialization. A solution is to create a new array and copy all bytes except for the trailing nulls, as shown in the following excerpt:

using (BinaryReader reader = new BinaryReader(bodyStream))
{
	byte[] bodyBytes = reader.ReadBytes((int)bodyStream.Length);

	int lengthWithoutNulls = bodyBytes.Length;
	for (int i = bodyBytes.Length - 1; i >= 0 && bodyBytes[i] == '\0'; 
			i--, lengthWithoutNulls--)
	{
		/* Intentionally left blank. */
	}
 
	byte[] cleanedBytes = new byte[lengthWithoutNulls];
	Array.Copy(bodyBytes, cleanedBytes, lengthWithoutNulls);
 
	DataContractJsonSerializer serializer
		= new DataContractJsonSerializer(typeof(StockQuote));
 
	using (MemoryStream stream = new MemoryStream(cleanedBytes))
	{
		StockQuote = (StockQuote)serializer.ReadObject(stream);
	}
}


This excerpt is from the downloadable sample code in my upcoming book Windows Phone 7 Unleashed.


Have a great day!

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Engineer
Switzerland Switzerland
Daniel is a former senior engineer in Technology and Research at the Office of the CTO at Microsoft, working on next generation systems.

Previously Daniel was a nine-time Microsoft MVP and co-founder of Outcoder, a Swiss software and consulting company.

Daniel is the author of Windows Phone 8 Unleashed and Windows Phone 7.5 Unleashed, both published by SAMS.

Daniel is the developer behind several acclaimed mobile apps including Surfy Browser for Android and Windows Phone. Daniel is the creator of a number of popular open-source projects, most notably Codon.

Would you like Daniel to bring value to your organisation? Please contact

Blog | Twitter


Xamarin Experts
Windows 10 Experts

Comments and Discussions

 
GeneralHello, i have studied your project regarding wp7 whic... Pin
Mohsin Malek16-Apr-11 0:20
Mohsin Malek16-Apr-11 0:20 
GeneralRe: Hi Mohsin, Yes, the Netflix Browser for Windows Phone 7 - P... Pin
Daniel Vaughan16-Apr-11 8:37
Daniel Vaughan16-Apr-11 8:37 
GeneralOk sure. Thanks for the comment. If you post your code, I'll... Pin
Daniel Vaughan28-Oct-10 9:12
Daniel Vaughan28-Oct-10 9:12 
GeneralOk sure. Thanks for the comment. If you post your code, I'll... Pin
Katka Vaughan28-Oct-10 9:09
Katka Vaughan28-Oct-10 9:09 
GeneralReason for my vote of 2 Well this solves the problem but you... Pin
h3228-Oct-10 2:29
h3228-Oct-10 2:29 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.