From 8bc9a7911b930e7f5d355297329a4de0f3a7f07c Mon Sep 17 00:00:00 2001 From: Gang Zhuo Date: Thu, 8 Oct 2015 05:57:14 -0400 Subject: [PATCH] remove reference of Newtonsoft.Json --- shadowsocks-csharp/3rd/SimpleJson.cs | 49 +++++++++++++------ .../Controller/Strategy/StatisticsStrategy.cs | 3 +- .../Model/StatisticsStrategyConfiguration.cs | 7 ++- shadowsocks-csharp/packages.config | 1 - shadowsocks-csharp/shadowsocks-csharp.csproj | 4 -- 5 files changed, 38 insertions(+), 26 deletions(-) diff --git a/shadowsocks-csharp/3rd/SimpleJson.cs b/shadowsocks-csharp/3rd/SimpleJson.cs index 6581e84b..df811228 100644 --- a/shadowsocks-csharp/3rd/SimpleJson.cs +++ b/shadowsocks-csharp/3rd/SimpleJson.cs @@ -580,7 +580,7 @@ namespace SimpleJson public static string SerializeObject(object json, IJsonSerializerStrategy jsonSerializerStrategy) { StringBuilder builder = new StringBuilder(BUILDER_CAPACITY); - bool success = SerializeValue(jsonSerializerStrategy, json, builder); + bool success = SerializeValue(jsonSerializerStrategy, json, 0, builder); return (success ? builder.ToString() : null); } @@ -966,7 +966,7 @@ namespace SimpleJson return TOKEN_NONE; } - protected static bool SerializeValue(IJsonSerializerStrategy jsonSerializerStrategy, object value, StringBuilder builder) + protected static bool SerializeValue(IJsonSerializerStrategy jsonSerializerStrategy, object value, int level, StringBuilder builder) { bool success = true; @@ -975,15 +975,15 @@ namespace SimpleJson else if (value is IDictionary) { IDictionary dict = (IDictionary)value; - success = SerializeObject(jsonSerializerStrategy, dict.Keys, dict.Values, builder); + success = SerializeObject(jsonSerializerStrategy, dict.Keys, dict.Values, level, builder); } else if (value is IDictionary) { IDictionary dict = (IDictionary)value; - success = SerializeObject(jsonSerializerStrategy, dict.Keys, dict.Values, builder); + success = SerializeObject(jsonSerializerStrategy, dict.Keys, dict.Values, level, builder); } else if (value is IEnumerable) - success = SerializeArray(jsonSerializerStrategy, (IEnumerable)value, builder); + success = SerializeArray(jsonSerializerStrategy, (IEnumerable)value, level, builder); else if (IsNumeric(value)) success = SerializeNumber(value, builder); else if (value is Boolean) @@ -995,16 +995,18 @@ namespace SimpleJson object serializedObject; success = jsonSerializerStrategy.SerializeNonPrimitiveObject(value, out serializedObject); if (success) - SerializeValue(jsonSerializerStrategy, serializedObject, builder); + SerializeValue(jsonSerializerStrategy, serializedObject, level, builder); } return success; } - protected static bool SerializeObject(IJsonSerializerStrategy jsonSerializerStrategy, IEnumerable keys, IEnumerable values, StringBuilder builder) + protected static bool SerializeObject(IJsonSerializerStrategy jsonSerializerStrategy, IEnumerable keys, IEnumerable values, int level, StringBuilder builder) { builder.Append("{\r\n"); + level++; + IEnumerator ke = keys.GetEnumerator(); IEnumerator ve = values.GetEnumerator(); @@ -1017,39 +1019,50 @@ namespace SimpleJson if (!first) builder.Append(",\r\n"); + FeedIndent(level, builder); + if (key is string) SerializeString((string)key, builder); else - if (!SerializeValue(jsonSerializerStrategy, value, builder)) return false; + if (!SerializeValue(jsonSerializerStrategy, value, level, builder)) return false; builder.Append(" : "); - if (!SerializeValue(jsonSerializerStrategy, value, builder)) + if (!SerializeValue(jsonSerializerStrategy, value, level, builder)) return false; first = false; } - builder.Append("}\r\n"); + builder.Append("\r\n"); + FeedIndent(level - 1, builder); + builder.Append("}"); return true; } - protected static bool SerializeArray(IJsonSerializerStrategy jsonSerializerStrategy, IEnumerable anArray, StringBuilder builder) + protected static bool SerializeArray(IJsonSerializerStrategy jsonSerializerStrategy, IEnumerable anArray, int level, StringBuilder builder) { - builder.Append("[\r\n "); + + builder.Append("[\r\n"); + + level++; bool first = true; foreach (object value in anArray) { if (!first) - builder.Append(",\r\n "); + builder.Append(",\r\n"); - if (!SerializeValue(jsonSerializerStrategy, value, builder)) + FeedIndent(level, builder); + + if (!SerializeValue(jsonSerializerStrategy, value, level, builder)) return false; first = false; } - builder.Append("\r\n]"); + builder.Append("\r\n"); + FeedIndent(level - 1, builder); + builder.Append("]"); return true; } @@ -1117,6 +1130,12 @@ namespace SimpleJson return true; } + protected static void FeedIndent(int level, StringBuilder builder) + { + for (int i = 0; i < level * 2; i++) + builder.Append(" "); + } + /// /// Determines if a given object is numeric in any way /// (can be integer, double, null, etc). diff --git a/shadowsocks-csharp/Controller/Strategy/StatisticsStrategy.cs b/shadowsocks-csharp/Controller/Strategy/StatisticsStrategy.cs index d3b5e26b..3a5e1c59 100644 --- a/shadowsocks-csharp/Controller/Strategy/StatisticsStrategy.cs +++ b/shadowsocks-csharp/Controller/Strategy/StatisticsStrategy.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Net; using System.Net.NetworkInformation; using System.Threading; -using Newtonsoft.Json; using Shadowsocks.Model; namespace Shadowsocks.Controller.Strategy @@ -66,7 +65,7 @@ namespace Shadowsocks.Controller.Strategy score += statisticsData.MinResponse*factor; if (!config.Calculations.TryGetValue("MaxResponse", out factor)) factor = 0; score += statisticsData.MaxResponse*factor; - Logging.Debug($"{serverName} {JsonConvert.SerializeObject(statisticsData)}"); + Logging.Debug($"{serverName} {SimpleJson.SimpleJson.SerializeObject(statisticsData)}"); return score; } diff --git a/shadowsocks-csharp/Model/StatisticsStrategyConfiguration.cs b/shadowsocks-csharp/Model/StatisticsStrategyConfiguration.cs index 62a48c2e..1b9ba90b 100644 --- a/shadowsocks-csharp/Model/StatisticsStrategyConfiguration.cs +++ b/shadowsocks-csharp/Model/StatisticsStrategyConfiguration.cs @@ -6,7 +6,6 @@ using System.Reflection; using Shadowsocks.Controller; using Shadowsocks.Controller.Strategy; using SimpleJson; -using Newtonsoft.Json; namespace Shadowsocks.Model { @@ -29,10 +28,10 @@ namespace Shadowsocks.Model try { var content = File.ReadAllText(ConfigFile); - var configuration = JsonConvert.DeserializeObject(content); + var configuration = SimpleJson.SimpleJson.DeserializeObject(content); return configuration; } - catch (FileNotFoundException e) + catch (FileNotFoundException) { var configuration = new StatisticsStrategyConfiguration(); Save(configuration); @@ -49,7 +48,7 @@ namespace Shadowsocks.Model { try { - var content = JsonConvert.SerializeObject(configuration, Formatting.Indented); + var content = SimpleJson.SimpleJson.SerializeObject(configuration); File.WriteAllText(ConfigFile, content); } catch (Exception e) diff --git a/shadowsocks-csharp/packages.config b/shadowsocks-csharp/packages.config index b309fb97..e79d8643 100644 --- a/shadowsocks-csharp/packages.config +++ b/shadowsocks-csharp/packages.config @@ -5,5 +5,4 @@ - \ No newline at end of file diff --git a/shadowsocks-csharp/shadowsocks-csharp.csproj b/shadowsocks-csharp/shadowsocks-csharp.csproj index 423268d8..0ec088a7 100644 --- a/shadowsocks-csharp/shadowsocks-csharp.csproj +++ b/shadowsocks-csharp/shadowsocks-csharp.csproj @@ -81,10 +81,6 @@ False - - 3rd\Newtonsoft.Json.7.0.1\lib\net40\Newtonsoft.Json.dll - True -