public string Serialize(object graph, TextSerializationSettings settings = null) { if (graph == null) { return(null); } return(Newtonsoft.Json.JsonConvert.SerializeObject(graph, this.GetSerializerSettings(settings ?? _settings))); }
public void Serialize(TextWriter writer, object graph, TextSerializationSettings settings = null) { if (writer == null) { throw new ArgumentNullException("writer"); } if (graph == null) { return; } var serializer = this.GetSerializer(settings); serializer.Serialize(writer, graph); }
private TextSerializationSettings GetSerializationSettings(HttpRequestHeaders headers) { if (headers == null) { return(null); } var behaviors = this.GetHeaderValues(headers, "x-json-behaviors"); var datetimeFormat = this.GetHeaderValue(headers, "x-json-datetime"); var casing = this.GetHeaderValue(headers, "x-json-casing"); if ((behaviors == null || behaviors.Count == 0) && string.IsNullOrEmpty(datetimeFormat) && string.IsNullOrEmpty(casing)) { return(null); } var settings = new TextSerializationSettings() { DateTimeFormat = datetimeFormat }; if (!string.IsNullOrEmpty(casing) && Enum.TryParse <SerializationNamingConvention>(casing, true, out var naming)) { settings.NamingConvention = naming; } if (behaviors != null && behaviors.Count > 0) { settings.Indented = behaviors.Contains("indented"); if (behaviors.Contains("ignores:none")) { settings.SerializationBehavior = SerializationBehavior.None; } else if (behaviors.Contains("ignores:null")) { settings.SerializationBehavior = SerializationBehavior.IgnoreNullValue; } else if (behaviors.Contains("ignores:default")) { settings.SerializationBehavior = SerializationBehavior.IgnoreDefaultValue; } } return(settings); }
protected override object OnExecute(CommandContext context) { var graph = context.Parameter; if (graph == null) { return(null); } //如果输入参数是文本或流或文本读取器,则反序列化它并返回 if (graph is string raw) { return(Serializer.Json.Deserialize <Dictionary <string, object> >(raw)); } if (graph is System.Text.StringBuilder text) { return(Serializer.Json.Deserialize <Dictionary <string, object> >(text.ToString())); } if (graph is Stream stream) { return(Serializer.Json.Deserialize <Dictionary <string, object> >(stream)); } if (graph is TextReader reader) { return(Serializer.Json.Deserialize <Dictionary <string, object> >(reader)); } var settings = new TextSerializationSettings() { MaximumDepth = context.Expression.Options.GetValue <int>(KEY_DEPTH_OPTION), Typed = context.Expression.Options.GetValue <bool>(KEY_TYPED_OPTION), Indented = context.Expression.Options.GetValue <bool>(KEY_INDENTED_OPTION), NamingConvention = context.Expression.Options.GetValue <SerializationNamingConvention>(KEY_CASING_OPTION), }; var json = Serializer.Json.Serialize(graph, settings); if (json != null) { context.Output.WriteLine(json); } return(json); }