Use writer/serializer json interop in SignalR (#11625)

This commit is contained in:
Brennan 2019-06-26 20:40:30 -07:00 committed by GitHub
parent f2ef27d46c
commit 7610ba3ef3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 5 additions and 13 deletions

View File

@ -500,8 +500,8 @@ namespace Microsoft.AspNetCore.SignalR.Protocol
} }
else if (message.HasResult) else if (message.HasResult)
{ {
using var token = GetParsedObject(message.Result, message.Result?.GetType()); writer.WritePropertyName(ResultPropertyNameBytes);
token.RootElement.WriteProperty(ResultPropertyNameBytes.EncodedUtf8Bytes, writer); JsonSerializer.WriteValue(writer, message.Result, message.Result?.GetType(), _payloadSerializerOptions);
} }
} }
@ -514,8 +514,8 @@ namespace Microsoft.AspNetCore.SignalR.Protocol
{ {
WriteInvocationId(message, writer); WriteInvocationId(message, writer);
using var token = GetParsedObject(message.Item, message.Item?.GetType()); writer.WritePropertyName(ItemPropertyNameBytes);
token.RootElement.WriteProperty(ItemPropertyNameBytes.EncodedUtf8Bytes, writer); JsonSerializer.WriteValue(writer, message.Item, message.Item?.GetType(), _payloadSerializerOptions);
} }
private void WriteInvocationMessage(InvocationMessage message, Utf8JsonWriter writer) private void WriteInvocationMessage(InvocationMessage message, Utf8JsonWriter writer)
@ -562,20 +562,12 @@ namespace Microsoft.AspNetCore.SignalR.Protocol
} }
else else
{ {
using var token = GetParsedObject(argument, type); JsonSerializer.WriteValue(writer, argument, type, _payloadSerializerOptions);
token.RootElement.WriteValue(writer);
} }
} }
writer.WriteEndArray(); writer.WriteEndArray();
} }
private JsonDocument GetParsedObject(object obj, Type type)
{
var bytes = JsonSerializer.ToUtf8Bytes(obj, type, _payloadSerializerOptions);
var token = JsonDocument.Parse(bytes);
return token;
}
private void WriteStreamIds(string[] streamIds, Utf8JsonWriter writer) private void WriteStreamIds(string[] streamIds, Utf8JsonWriter writer)
{ {
if (streamIds == null) if (streamIds == null)