Skip to content

Commit 93957da

Browse files
committed
Align serialization with NEST 2.0 implementation
This is to handle serializing JObject using the Json.NET contract for it and not treating it as an IEnumerable<object> See #1609
1 parent 6a1bcec commit 93957da

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

src/Elasticsearch.Net/Connection/RequestHandlers/RequestHandlerBase.cs

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,17 +56,27 @@ protected byte[] PostData(object data)
5656
var s = data as string;
5757
if (s != null) return s.Utf8Bytes();
5858

59-
var ss = data as IEnumerable<string>;
60-
if (ss != null) return (string.Join("\n", ss) + "\n").Utf8Bytes();
59+
var dataType = data.GetType();
60+
61+
if (typeof(IEnumerable<string>).IsAssignableFrom(dataType))
62+
{
63+
var ss = (IEnumerable<string>)data;
64+
return (string.Join("\n", ss) + "\n").Utf8Bytes();
65+
}
66+
67+
if (typeof(IEnumerable<object>).IsAssignableFrom(dataType))
68+
{
69+
var so = (IEnumerable<object>)data;
70+
var joined = string.Join("\n", so
71+
.Select(soo => this._serializer.Serialize(soo, SerializationFormatting.None).Utf8String())) + "\n";
72+
return joined.Utf8Bytes();
73+
}
6174

62-
var so = data as IEnumerable<object>;
6375
var indent = this._settings.UsesPrettyRequests
6476
? SerializationFormatting.Indented
6577
: SerializationFormatting.None;
66-
if (so == null) return this._serializer.Serialize(data, indent);
67-
var joined = string.Join("\n", so
68-
.Select(soo => this._serializer.Serialize(soo, SerializationFormatting.None).Utf8String())) + "\n";
69-
return joined.Utf8Bytes();
78+
79+
return this._serializer.Serialize(data, indent);
7080
}
7181

7282
protected static bool IsValidResponse(ITransportRequestState requestState, IElasticsearchResponse streamResponse)

0 commit comments

Comments
 (0)