/// <summary> /// Reads the next JSON token from the underlying <see cref="JsonReader"/> as a <see cref="Nullable{T}"/> of <see cref="Boolean"/>. /// </summary> /// <returns>A <see cref="Nullable{T}"/> of <see cref="Boolean"/>.</returns> public override bool?ReadAsBoolean() { bool?b = _reader.ReadAsBoolean(); ValidateCurrentToken(); return(b); }
public IdentityInfo ReadIdentityInfo(JsonReader reader) { IdentityInfo info = new IdentityInfo(); reader.Read(); while (reader.TokenType == JsonToken.PropertyName) { switch ((string)reader.Value) { case "toStr": info.ToStr = reader.ReadAsString(); break; case "id": info.Id = reader.ReadAsString(); break; case "isNew": info.IsNew = reader.ReadAsBoolean(); break; case "Type": info.Type = reader.ReadAsString(); break; case "ticks": info.Ticks = long.Parse(reader.ReadAsString()); break; case "modified": info.Modified = bool.Parse(reader.ReadAsString()); break; default: return info; } reader.Read(); } if (info.Type == null) throw new JsonSerializationException($"Expected member 'Type' not found in {reader.Path}"); return info; }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.String) { return new Attachment { Content = (string)reader.Value }; } if (reader.TokenType == JsonToken.StartObject) { var attachment = new Attachment(); while (reader.Read()) { if (reader.TokenType == JsonToken.PropertyName) { var propertyName = (string)reader.Value; switch (propertyName.ToLowerInvariant()) { case "_content": case "content": attachment.Content = reader.ReadAsString(); break; case "_name": case "name": attachment.Name = reader.ReadAsString(); break; case "author": attachment.Author = reader.ReadAsString(); break; case "keywords": attachment.Keywords = reader.ReadAsString(); break; case "date": reader.Read(); switch (reader.TokenType) { case JsonToken.String: var value = (string)reader.Value; if (!string.IsNullOrEmpty(value)) attachment.Date = Convert.ToDateTime(value); break; case JsonToken.Date: attachment.Date = (DateTime?)reader.Value; break; } break; case "_content_type": case "content_type": case "contenttype": case "contentType": attachment.ContentType = reader.ReadAsString(); break; case "_content_length": case "content_length": case "contentlength": case "contentLength": reader.Read(); switch (reader.TokenType) { case JsonToken.String: var value = (string)reader.Value; if (!string.IsNullOrEmpty(value)) attachment.ContentLength = Convert.ToInt64(value); break; case JsonToken.Integer: case JsonToken.Float: attachment.ContentLength = (long?)reader.Value; break; } break; case "_language": case "language": attachment.Language = reader.ReadAsString(); break; case "_detect_language": attachment.DetectLanguage = reader.ReadAsBoolean(); break; case "_indexed_chars": case "indexed_chars": reader.Read(); switch (reader.TokenType) { case JsonToken.String: var value = (string)reader.Value; if (!string.IsNullOrEmpty(value)) attachment.IndexedCharacters = Convert.ToInt64(value); break; case JsonToken.Integer: case JsonToken.Float: attachment.IndexedCharacters = (long?)reader.Value; break; } break; case "title": attachment.Title = reader.ReadAsString(); break; } } if (reader.TokenType == JsonToken.EndObject) { break; } } return attachment; } return null; }