From d4158bb53ca6d6b21fad2e9ca52ae98ad1d42a37 Mon Sep 17 00:00:00 2001 From: JamesNK Date: Sun, 21 Feb 2010 10:00:03 +0000 Subject: [PATCH] -Escape JSON property text --- .../Serialization/JsonSerializerTest.cs | 16 ++++++++++++++++ Src/Newtonsoft.Json/JsonTextWriter.cs | 8 +------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs b/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs index 2c3a2587..e1f0c065 100644 --- a/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs +++ b/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs @@ -3016,5 +3016,21 @@ keyword such as type of business."" return objectType.IsAssignableFrom(typeof(PosDouble)); } } + + [Test] + public void TestEscapeDictionaryStrings() + { + const string s = @"host\user"; + string serialized = JsonConvert.SerializeObject(s); + Assert.AreEqual(@"""host\\user""", serialized); + + Dictionary d1 = new Dictionary(); + d1.Add(5, s); + Assert.AreEqual(@"{""5"":""host\\user""}", JsonConvert.SerializeObject(d1)); + + Dictionary d2 = new Dictionary(); + d2.Add(s, 5); + Assert.AreEqual(@"{""host\\user"":5}", JsonConvert.SerializeObject(d2)); + } } } \ No newline at end of file diff --git a/Src/Newtonsoft.Json/JsonTextWriter.cs b/Src/Newtonsoft.Json/JsonTextWriter.cs index 56663f12..12ccea4a 100644 --- a/Src/Newtonsoft.Json/JsonTextWriter.cs +++ b/Src/Newtonsoft.Json/JsonTextWriter.cs @@ -200,13 +200,7 @@ namespace Newtonsoft.Json { base.WritePropertyName(name); - if (_quoteName) - _writer.Write(_quoteChar); - - _writer.Write(name); - - if (_quoteName) - _writer.Write(_quoteChar); + JavaScriptUtils.WriteEscapedJavaScriptString(_writer, name, _quoteChar, _quoteName); _writer.Write(':'); }