Merge pull request #2819 from BrzVlad/fix-major-log
[mono.git] / mcs / class / System.Web.Extensions / System.Web.Script.Serialization / JsonDeserializer.cs
index 8593e532bf0a378608bd3abe67687a0ddb2eefb8..29e6cfb92b86bd69a4e665ccb7ab5a94d7cb4732 100644 (file)
@@ -226,7 +226,7 @@ namespace System.Web.Script.Serialization
                        /*colon    CO*/ {CO,CO,__,__,__,__,CA,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__},
                        /*value    VA*/ {VA,VA,OS,__,AB,__,__,__,SB,__,__,PX,MX,__,ZX,IX,__,__,__,__,__,FA,__,NU,__,__,TR,__,__,__,__,__,I1,__,__,V1},
                        /*array    AR*/ {AR,AR,OS,__,AB,AE,__,__,SB,__,__,PX,MX,__,ZX,IX,__,__,__,__,__,FA,__,NU,__,__,TR,__,__,__,__,__,I1,__,__,V1},
-                       /*string   ST*/ {ST,__,ST,ST,ST,ST,ST,ST,SE,EX,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST},
+                       /*string   ST*/ {ST,ST,ST,ST,ST,ST,ST,ST,SE,EX,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST,ST},
                        /*escape   ES*/ {__,__,__,__,__,__,__,__,ST,ST,ST,__,__,__,__,__,__,ST,__,__,__,ST,__,ST,ST,__,ST,U1,__,__,__,__,__,__,__,__},
                        /*u1       U1*/ {__,__,__,__,__,__,__,__,__,__,__,__,__,__,U2,U2,U2,U2,U2,U2,U2,U2,__,__,__,__,__,__,U2,U2,__,__,__,__,__,__},
                        /*u2       U2*/ {__,__,__,__,__,__,__,__,__,__,__,__,__,__,U3,U3,U3,U3,U3,U3,U3,U3,__,__,__,__,__,__,U3,U3,__,__,__,__,__,__},
@@ -473,43 +473,43 @@ namespace System.Web.Script.Serialization
                                case JsonType.INTEGER:
                                        /* MS AJAX.NET JSON parser promotes big integers to double */
                                        
-                                       if (Int32.TryParse (s, out intValue))
+                                       if (Int32.TryParse (s, NumberStyles.Integer, CultureInfo.InvariantCulture, out intValue))
                                                result = intValue;
-                                       else if (Int64.TryParse (s, out longValue))
+                                       else if (Int64.TryParse (s, NumberStyles.Integer, CultureInfo.InvariantCulture, out longValue))
                                                result = longValue;
-                                       else if (Decimal.TryParse (s, out decimalValue))
+                                       else if (Decimal.TryParse (s, NumberStyles.Integer, CultureInfo.InvariantCulture, out decimalValue))
                                                result = decimalValue;
-                                       else if (Double.TryParse (s, out doubleValue))
+                                       else if (Double.TryParse (s, NumberStyles.Integer, CultureInfo.InvariantCulture, out doubleValue))
                                                result = doubleValue;
                                        else
                                                converted = false;
                                        break;
 
                                case JsonType.FLOAT:
-                                       if (Decimal.TryParse (s, out decimalValue))
+                                       if (Decimal.TryParse (s, NumberStyles.Float, CultureInfo.InvariantCulture, out decimalValue))
                                                result = decimalValue;
-                                       else if (Double.TryParse (s, out doubleValue))
+                                       else if (Double.TryParse (s, NumberStyles.Float, CultureInfo.InvariantCulture, out doubleValue))
                                                result = doubleValue;
                                        else
                                                converted = false;
                                        break;
 
                                case JsonType.TRUE:
-                                       if (String.Compare (s, "true", StringComparison.Ordinal) == 0)
+                                       if (String.Compare (s.Trim (), "true", StringComparison.Ordinal) == 0)
                                                result = true;
                                        else
                                                converted = false;
                                        break;
 
                                case JsonType.FALSE:
-                                       if (String.Compare (s, "false", StringComparison.Ordinal) == 0)
+                                       if (String.Compare (s.Trim (), "false", StringComparison.Ordinal) == 0)
                                                result = false;
                                        else
                                                converted = false;
                                        break;
 
                                case JsonType.NULL:
-                                       if (String.Compare (s, "null", StringComparison.Ordinal) != 0)
+                                       if (String.Compare (s.Trim (), "null", StringComparison.Ordinal) != 0)
                                                converted = false;
                                        break;
 
@@ -833,7 +833,7 @@ namespace System.Web.Script.Serialization
 
                void CreateArray ()
                {
-                       var arr = new List <object> ();
+                       var arr = new ArrayList ();
                        PushObject (arr);
                }
                
@@ -865,7 +865,7 @@ namespace System.Web.Script.Serialization
                {
                        Dictionary <string, object> dict = PeekObject () as Dictionary <string, object>;
                        if (dict == null) {
-                               List <object> arr = PeekObject () as List <object>;
+                               ArrayList arr = PeekObject () as ArrayList;
                                if (arr == null)
                                        throw new InvalidOperationException ("Internal error: current object is not a dictionary or an array.");
                                arr.Add (o);