Click here to Skip to main content
Click here to Skip to main content

Work-Around for DataContractJsonSerializer ArgumentNullExceptions

By , 24 Oct 2010
Rate this:
Please Sign up or sign in to vote.
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)

About the Author

Daniel Vaughan
President Outcoder
Switzerland Switzerland
Daniel Vaughan is a Microsoft MVP and cofounder of Outcoder, a Swiss software and consulting company dedicated to creating best-of-breed user experiences and leading-edge back-end solutions, using the Microsoft stack of technologies--in particular WPF, WinRT, and Windows Phone.
 
Daniel is the author of Windows Phone 7.5 Unleashed and Windows Phone 8 Unleashed, both published by SAMS.
 
Daniel is also the creator of a number of open-source projects, including Calcium SDK, and Clog.
 
Would you like Daniel to bring value to your organisation? Please contact

Daniel's Blog | MVP profile | Follow on Twitter
 
Windows Phone Experts
Follow on   Twitter   Google+   LinkedIn

Comments and Discussions

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

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

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

| Advertise | Privacy | Mobile
Web01 | 2.8.140415.2 | Last Updated 24 Oct 2010
Article Copyright 2010 by Daniel Vaughan
Everything else Copyright © CodeProject, 1999-2014
Terms of Use
Layout: fixed | fluid