public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { SearchContinuationToken token = (SearchContinuationToken)value; var payload = new SearchContinuationTokenPayload() { NextLink = token.NextLink, NextPageParameters = token.NextPageParameters }; serializer.Serialize(writer, payload); }
public override object ReadJson( JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { SearchContinuationTokenPayload payload = serializer.Deserialize <SearchContinuationTokenPayload>(reader); Uri nextLinkUri; try { nextLinkUri = new Uri(payload.NextLink); } catch (FormatException e) { throw new JsonSerializationException( "Cannot deserialize continuation token. Failed to parse nextLink because it is not a valid URL.", e); } string apiVersion = ParseApiVersion(nextLinkUri.Query); if (string.IsNullOrWhiteSpace(apiVersion)) { throw new JsonSerializationException( "Cannot deserialize continuation token because the api-version is missing."); } if (apiVersion != Consts.TargetApiVersion) { const string MessageFormat = "Cannot deserialize a continuation token for a different api-version. Token contains version " + "'{0}'; Expected version '{1}'."; string message = string.Format(MessageFormat, apiVersion, Consts.TargetApiVersion); throw new JsonSerializationException(message); } return(new SearchContinuationToken(payload.NextLink, payload.NextPageParameters)); }