提交 17b8c33c 编写于 作者: C CyrusNajmabadi

Properly deserialize null Ids.

上级 7bddfd10
......@@ -10,8 +10,13 @@ internal partial class AggregateJsonConverter : JsonConverter
{
private abstract class WorkspaceIdJsonConverter<T> : BaseJsonConverter<T>
{
protected (Guid, string) ReadFromJsonObject(JsonReader reader)
protected (Guid, string)? ReadFromJsonObject(JsonReader reader)
{
if (reader.TokenType == JsonToken.Null)
{
return null;
}
Contract.ThrowIfFalse(reader.TokenType == JsonToken.StartObject);
var (id, debugName) = ReadIdAndName(reader);
......@@ -51,8 +56,8 @@ private class SolutionIdJsonConverter : WorkspaceIdJsonConverter<SolutionId>
{
protected override SolutionId ReadValue(JsonReader reader, JsonSerializer serializer)
{
var (id, debugName) = ReadFromJsonObject(reader);
return SolutionId.CreateFromSerialized(id, debugName);
(Guid id, string debugName)? tuple = ReadFromJsonObject(reader);
return tuple == null ? null : SolutionId.CreateFromSerialized(tuple.Value.id, tuple.Value.debugName);
}
protected override void WriteValue(JsonWriter writer, SolutionId solutionId, JsonSerializer serializer)
......@@ -63,8 +68,8 @@ private class ProjectIdJsonConverter : WorkspaceIdJsonConverter<ProjectId>
{
protected override ProjectId ReadValue(JsonReader reader, JsonSerializer serializer)
{
var (id, debugName) = ReadFromJsonObject(reader);
return ProjectId.CreateFromSerialized(id, debugName);
(Guid id, string debugName)? tuple = ReadFromJsonObject(reader);
return tuple == null ? null : ProjectId.CreateFromSerialized(tuple.Value.id, tuple.Value.debugName);
}
protected override void WriteValue(JsonWriter writer, ProjectId projectId, JsonSerializer serializer)
......@@ -75,6 +80,11 @@ private class DocumentIdJsonConverter : WorkspaceIdJsonConverter<DocumentId>
{
protected override DocumentId ReadValue(JsonReader reader, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null)
{
return null;
}
Contract.ThrowIfFalse(reader.TokenType == JsonToken.StartObject);
var projectId = ReadProperty<ProjectId>(serializer, reader);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册