Skip to content

Commit 7cd229e

Browse files
authored
Replace ReferenceLoopHandling with direct method call (#3618)
* Replace ReferenceLoopHandling with direct method call This commit replaces the ReferenceLoopHandling property manipulation in FieldsJsonConverter that is used to circumvent Json.NET's reference loop detection when Fields contains only a single Field, with a direct call to the serialization method on FieldJsonConverter for each Field. Fixes #3617
1 parent 6938f0f commit 7cd229e

File tree

2 files changed

+6
-8
lines changed

2 files changed

+6
-8
lines changed

src/Nest/CommonAbstractions/Infer/Field/FieldJsonConverter.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ internal class FieldJsonConverter : JsonConverter
1414
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
1515
{
1616
var field = (Field)value;
17+
WriteField(writer, field, serializer);
18+
}
19+
20+
internal static void WriteField(JsonWriter writer, Field field, JsonSerializer serializer)
21+
{
1722
if (field == null)
1823
{
1924
writer.WriteNull();

src/Nest/CommonAbstractions/Infer/Fields/FieldsJsonConverter.cs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,8 @@ public override void WriteJson(JsonWriter writer, object value, JsonSerializer s
1818
writer.WriteStartArray();
1919
if (fields != null)
2020
{
21-
// overridden Equals() method means a Fields with only one Field
22-
// results in Equality, which triggers Json.NET's Reference loop detection
23-
var referenceLoopHandling = serializer.ReferenceLoopHandling;
24-
serializer.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;
25-
2621
foreach (var field in fields.ListOfFields)
27-
serializer.Serialize(writer, field);
28-
29-
serializer.ReferenceLoopHandling = referenceLoopHandling;
22+
FieldJsonConverter.WriteField(writer, field, serializer);
3023
}
3124
writer.WriteEndArray();
3225
}

0 commit comments

Comments
 (0)