This is Xamarin's bug tracking system. For product support, please use the support links listed in your Xamarin Account.
Bug 4242 - JavaScriptSerializer should use invariant culture
Summary: JavaScriptSerializer should use invariant culture
Status: NEW
Alias: None
Product: Class Libraries
Classification: Mono
Component: Sys.Web (show other bugs)
Version: Trunk
Hardware: PC Linux
: --- normal
Target Milestone: ---
Assignee: Bugzilla
Depends on:
Reported: 2012-04-04 18:40 UTC by Denis Lebedenko
Modified: 2015-10-16 11:10 UTC (History)
4 users (show)

See Also:


Description Denis Lebedenko 2012-04-04 18:40:25 UTC
It seems that the System.Web.Script.Serialization.JavaScriptSerializer class from the System.Web.Extensions assembly is using the current culture instead of the invariant culture for serialization and deserialization. This leads to incorrectly serialized floating-point numbers on cultures that use comma instead of a point as the decimal symbol.

Mono versions: Git 5091f779533227461caef216b56ccad071bd6cab, Debian

Steps to reproduce:

[mono] /tmp/serializationtest @ cat test.cs
using System;
using System.Globalization;
using System.Threading;
using System.Web.Script.Serialization;

class Program
        static void Main()
                Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

                Thread.CurrentThread.CurrentCulture = new CultureInfo("lt-LT");

        static void Test()
                JavaScriptSerializer serializer = new JavaScriptSerializer();

                double[] array = new[] { 123.456, 0.78901 };

                string arrayJson = serializer.Serialize(array);

[mono] /tmp/serializationtest @ dmcs test.cs -r:System.Web.Extensions
[mono] /tmp/serializationtest @ mono test.exe



Expected the same output as on MS .NET:

Comment 1 mz 2012-05-23 04:30:14 UTC
JavaScriptDeserializer suffers the same problem.
Comment 2 Hari Menon 2015-01-05 15:09:42 UTC
Are there any changes to the status of this bug? 

I am facing the issues mentioned in this thread when trying to deserialize using System.Web.Script.Serialization.JavaScriptSerializer on Mono on Ubuntu.

Are there any known workarounds to make the JavaScriptSerializer serialize/deserialize using CultureInfo.InvariantCulture ?

Comment 3 Peter Hagen 2015-10-16 11:10:46 UTC
I think I ran into the same issue, with deserializing double, float and decimal values. This on with mono 4.0.4(.1)

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