static void DeserializeObject(TextReader reader, ObjectBuilder builder)
{
int c;
builder.StartObject();
while (true)
{
Methods.ConsumeWhiteSpace(reader);
c = reader.Peek();
if (c == -1)
{
throw new DeserializationException("Unexpected end of stream", reader, true);
}
if (c == '}')
{
reader.Read(); // skip }
break;
}
c = reader.Read();
if (c == -1)
{
throw new DeserializationException("Unexpected end of stream", reader, true);
}
if (c != '"')
{
throw new DeserializationException("Expected \", found " + (char)c, reader, false);
}
builder.StartObjectMember();
DeserializeString(reader, builder);
Methods.ConsumeWhiteSpace(reader);
c = reader.Read();
if (c == -1)
{
throw new DeserializationException("Unexpected end of stream", reader, true);
}
if (c != ':')
{
throw new DeserializationException("Expected :, found " + (char)c, reader, false);
}
_DeserializeMember(reader, builder);
builder.EndObjectMember();
Methods.ConsumeWhiteSpace(reader);
c = reader.Read();
if (c == ',')
{
continue;
}
if (c == '}')
{
break;
}
if (c == -1)
{
throw new DeserializationException("Unexpected end of stream", reader, true);
}
throw new DeserializationException("Expected , or }, found " + (char)c, reader, false);
}
builder.EndObject();
}