protected override void SerializeJson(JsonWriter writer, object value, IFieldNameQuery castValue, JsonSerializer serializer) { var fieldName = castValue.Field; if (fieldName == null) { return; } var settings = serializer.GetConnectionSettings(); var field = settings?.Inferrer.Field(fieldName); if (field.IsNullOrEmpty()) { return; } writer.WriteStartObject(); writer.WritePropertyName(field); this.Reserialize(writer, value, serializer); writer.WriteEndObject(); }
protected override void SerializeJson(JsonWriter writer, object value, IFieldNameQuery castValue, JsonSerializer serializer) { var fieldName = castValue.Field; if (fieldName == null) { return; } var settings = serializer.GetConnectionSettings(); var field = settings.Inferrer.Field(fieldName); if (field.IsNullOrEmpty()) { return; } var info = GetOrCreateTypeInfo(typeof(TInterface)); using (var sw = new StringWriter()) using (var localWriter = new JsonTextWriter(sw)) { this.Reserialize(localWriter, value, serializer); var jo = JObject.Parse(sw.ToString()); var v = info.Item1.ValueProvider.GetValue(castValue); JToken o = null; if (v != null) { o = JToken.FromObject(v, serializer); } if (info.Item2.FieldName.IsNullOrEmpty()) { jo.Add(field, o); } else { var subObject = new JObject { { info.Item2.FieldName, o } }; jo.Add(field, subObject); } writer.WriteToken(jo.CreateReader()); } }