Bug 26227 - JavaScriptSerializer.Deserialize(string, Type) does not work
Summary: JavaScriptSerializer.Deserialize(string, Type) does not work
Status: NEW
Alias: None
Product: Class Libraries
Classification: Mono
Component: System.Web (show other bugs)
Version: 3.12.0
Hardware: PC Linux
: --- normal
Target Milestone: Untriaged
Assignee: Bugzilla
URL:
Depends on:
Blocks:
 
Reported: 2015-01-21 06:25 UTC by Nikki Locke
Modified: 2015-01-21 06:25 UTC (History)
1 user (show)

See Also:
Tags:
Is this bug a regression?: ---
Last known good build:


Attachments
Test case (696 bytes, text/plain)
2015-01-21 06:25 UTC, Nikki Locke
Details

Description Nikki Locke 2015-01-21 06:25:12 UTC
JavaScriptSerializer.Deserialize(string, Type) returns a Dictionary`2 rather than an object of the requested type.

using System;
using System.Web.Script.Serialization;

namespace Test {
	class Program {
		static void Main() {
			string json = "{'CompanyName':'Trumphurst Ltd.'}";
			JavaScriptSerializer ser = new JavaScriptSerializer();
			Settings s = ser.Deserialize<Settings>(json);				// Works fine
			Console.WriteLine(s.CompanyName);
			object o = ser.Deserialize(json, typeof(Settings));
			Console.WriteLine("Result type is {0}", o.GetType().Name);	// Prints Result type is Dictionary`2
			s = (Settings)o;	// throws System.InvalidCastException: Cannot cast from source type to destination type.
			Console.WriteLine(s.CompanyName);
		}
	}
	
	public class Settings {
		public string CompanyName;
	}

}
Comment 1 Nikki Locke 2015-01-21 06:25:59 UTC
Created attachment 9431 [details]
Test case

Note You need to log in before you can comment on or make changes to this bug.