Пример #1
0
        public string Serialize(object obj)
        {
            var serializer = new JsonSerializer
            {
                MissingMemberHandling = MissingMemberHandling.Ignore,
                NullValueHandling     = NullHandling,
                DefaultValueHandling  = DefaultValueHandling.Include,
                ContractResolver      = JsonContractResolver
            };

            if (JsonConverters != null)
            {
                foreach (var converter in JsonConverters.Reverse().Where(writer => writer.CanWrite))
                {
                    serializer.Converters.Add(converter);
                }
            }

            using (var stringWriter = new StringWriter())
                using (var jsonTextWriter = new JsonTextWriter(stringWriter)
                {
                    QuoteName = QuoteName
                })
                {
                    jsonTextWriter.Formatting = Formatting.Indented;
                    jsonTextWriter.QuoteChar  = '"';
                    serializer.Serialize(jsonTextWriter, obj);
                    return(stringWriter.ToString());
                }
        }
Пример #2
0
        /// <summary>
        ///     Parses the input to a magic command, interpreting the input as
        ///     a name followed by a JSON-serialized dictionary.
        /// </summary>
        public static (string, Dictionary <string, string>) ParseInput(string input)
        {
            if (input == null)
            {
                return(string.Empty, new Dictionary <string, string> {
                });
            }
            var BLANK_SPACE = new char[1] {
                ' '
            };

            var inputParts = input.Split(BLANK_SPACE, 2, StringSplitOptions.RemoveEmptyEntries);
            var name       = inputParts.Length > 0 ? inputParts[0] : string.Empty;
            var args       = inputParts.Length > 1
                    ? JsonConverters.JsonToDict(inputParts[1])
                    : new Dictionary <string, string> {
            };

            return(name, args);
        }
Пример #3
0
        public T Deserialize <T>(string content)
        {
            var serializer = new JsonSerializer
            {
                MissingMemberHandling = MissingMemberHandling.Ignore,
                NullValueHandling     = NullHandling,
                DefaultValueHandling  = DefaultValueHandling.Include
            };

            if (JsonConverters != null)
            {
                foreach (var converter in JsonConverters.Reverse().Where(writer => writer.CanRead))
                {
                    serializer.Converters.Add(converter);
                }
            }

            using (var reader = new StringReader(content))
                using (var jsonReader = new JsonTextReader(reader))
                    return(serializer.Deserialize <T>(jsonReader));
        }
        public void JsonToDict()
        {
            var s   = "bar";
            var i   = 1;
            var t   = ("A", ("A.a", "A.b"));
            var a   = new int[] { 1, 2, 3, 4 };
            var arg = new Dictionary <string, object>
            {
                { "s", s },
                { "i", i },
                { "t", t },
                { "a", a }
            };

            var json   = JsonConvert.SerializeObject(arg);
            var result = JsonConverters.JsonToDict(json);

            Assert.AreEqual(4, result.Count);
            Assert.AreEqual(JsonConvert.SerializeObject(s), result["s"]);
            Assert.AreEqual(JsonConvert.SerializeObject(i), result["i"]);
            Assert.AreEqual(JsonConvert.SerializeObject(t), result["t"]);
            Assert.AreEqual(JsonConvert.SerializeObject(a), result["a"]);
        }
Пример #5
0
 /// <summary>
 ///     Parses the input to a magic command, interpreting the input as
 ///     a name followed by a JSON-serialized dictionary.
 /// </summary>
 public static Dictionary <string, string> JsonToDict(string input) =>
 !string.IsNullOrEmpty(input) ? JsonConverters.JsonToDict(input) : new Dictionary <string, string>
 {
 };