diff --git a/src/Nest/CommonAbstractions/Infer/Field/FieldJsonConverter.cs b/src/Nest/CommonAbstractions/Infer/Field/FieldJsonConverter.cs index b14e34496bd..51d27c8f160 100644 --- a/src/Nest/CommonAbstractions/Infer/Field/FieldJsonConverter.cs +++ b/src/Nest/CommonAbstractions/Infer/Field/FieldJsonConverter.cs @@ -14,6 +14,11 @@ internal class FieldJsonConverter : JsonConverter public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { var field = (Field)value; + WriteField(writer, field, serializer); + } + + internal static void WriteField(JsonWriter writer, Field field, JsonSerializer serializer) + { if (field == null) { writer.WriteNull(); diff --git a/src/Nest/CommonAbstractions/Infer/Fields/FieldsJsonConverter.cs b/src/Nest/CommonAbstractions/Infer/Fields/FieldsJsonConverter.cs index d26134b5069..d9558f97694 100644 --- a/src/Nest/CommonAbstractions/Infer/Fields/FieldsJsonConverter.cs +++ b/src/Nest/CommonAbstractions/Infer/Fields/FieldsJsonConverter.cs @@ -18,15 +18,8 @@ public override void WriteJson(JsonWriter writer, object value, JsonSerializer s writer.WriteStartArray(); if (fields != null) { - // overridden Equals() method means a Fields with only one Field - // results in Equality, which triggers Json.NET's Reference loop detection - var referenceLoopHandling = serializer.ReferenceLoopHandling; - serializer.ReferenceLoopHandling = ReferenceLoopHandling.Serialize; - foreach (var field in fields.ListOfFields) - serializer.Serialize(writer, field); - - serializer.ReferenceLoopHandling = referenceLoopHandling; + FieldJsonConverter.WriteField(writer, field, serializer); } writer.WriteEndArray(); }