public void WriteInner(Utf8JsonWriter writer, IShaped value, JsonSerializerOptions options) { var reader = ReadAccessor.Create(typeof(T), AccessorMemberTypes.Properties, AccessorMemberScope.Public, out var members); JsonShapedDataConverter <T> .WriteInner(members, reader, writer, value, options); }
internal static void WriteInner(AccessorMembers members, IReadAccessor reader, Utf8JsonWriter writer, IShaped value, JsonSerializerOptions options) { if (value.Body != null) { foreach (var field in value.Fields) { if (!members.TryGetValue(field, out var member)) { continue; } if (!member.CanRead) { continue; } // key: var propertyName = options.PropertyNamingPolicy?.ConvertName(member.Name) ?? member.Name; writer.WritePropertyName(propertyName); // value (can be null): reader.TryGetValue(value.Body, member.Name, out var item); JsonSerializer.Serialize(writer, item, options); } } }