public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { var request = value as UpdateListItemsRequest; if (request == null) { writer.WriteNull(); return; } /* "additems" : ["3","4","5"], "adduniqueitems" : ["1","6"], "removeitems": ["2","5"] */ writer.WriteStartObject(); writer.WritePropertyName(request.Property ); writer.WriteStartObject(); if (request.ItemsToAdd.Count > 0) { if (request.AddUniquely == true) writer.WriteArray("adduniqueitems", request.ItemsToAdd); else writer.WriteArray("additems", request.ItemsToAdd); } if (request.ItemsToRemove.Count > 0) writer.WriteArray("removeitems", request.ItemsToRemove); writer.WriteEndObject(); writer.WriteEndObject(); }
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { var push = value as PushNotification; if (push == null) { writer.WriteNull(); return; } writer.StartObject(); // Write push type if (string.IsNullOrWhiteSpace(push.Query) == false) writer.WriteProperty("query", push.Query); else if( push.Channels.Count() > 0 ) writer.WriteArray("channels", push.Channels); else if( push.DeviceIds.Count() > 0 ) writer.WriteArray("deviceids", push.DeviceIds); else writer.WriteProperty("broadcast", true); // Write data WriteData(writer, push); // Write platform options WritePlatformOptions(writer, push.PlatformOptions); writer.EndObject(); }
private static void WriteProperties(JsonWriter writer, Entity entity, JsonSerializer serializer) { foreach (var property in entity.Properties) { if (property.Value is NullValue) { writer.WritePropertyName(property.Key); writer.WriteNull(); } else if (property.Value is MultiValue) { var collection = property.Value.GetValues<string>(); writer.WriteArray(property.Key, collection); } else writer.WriteProperty(property.Key, property.Value.GetValue<string>()); } }
private static void WriteTags(JsonWriter writer, Entity entity, JsonSerializer serializer) { if (entity.Tags.Count() > 0) writer.WriteArray("__tags", entity.Tags); }
private static void WriteAcls(JsonWriter writer, List<Claim> allowed, List<Claim> denied, List<ResetRequest> reset) { var map = new Dictionary<SidTypeKey, ClaimGroup>(); allowed.For(x => { ClaimGroup group; var key = new SidTypeKey { Sid = x.Sid, Type = x.ClaimType }; if (map.TryGetValue(key, out group) == false) group = new ClaimGroup { Sid = x.Sid, Type = x.ClaimType }; group.Allowed.Add(x.AccessType); }); denied.For(x => { ClaimGroup group; var key = new SidTypeKey { Sid = x.Sid, Type = x.ClaimType }; if (map.TryGetValue(key, out group) == false) group = new ClaimGroup { Sid = x.Sid, Type = x.ClaimType }; group.Denied.Add(x.AccessType); }); reset.For(x => { ClaimGroup group; var key = new SidTypeKey { Sid = x.Sid, Type = x.Type }; if (map.TryGetValue(key, out group) == false) group = new ClaimGroup { Sid = x.Sid, Type = x.Type }; group.Reset.Add(x.Access); }); writer.WriteStartArray(); map.Values.For(x => { writer.WriteStartObject(); writer.WriteProperty("sid", x.Sid); writer.WriteProperty("type", x.Type.ToString().ToLower()); if (x.Allowed.Count > 0) writer.WriteArray("allow", x.Allowed.Select(y => y.ToString().ToLower())); if (x.Denied.Count > 0) writer.WriteArray("deny", x.Denied.Select(y => y.ToString().ToLower())); if (x.Reset.Count > 0) writer.WriteArray("dontcare", x.Reset.Select(y => y.ToString().ToLower())); writer.WriteEndObject(); }); writer.WriteEndArray(); }
private string GenerateJsonSchema() { List<string> required = new List<string>(); MemoryStream stream = new MemoryStream(); JsonWriter writer = new JsonWriter(stream); writer.WriteObject(); writer.WriteMember("$schema"); writer.WriteValue("http://json-schema.org/draft-04/schema"); writer.WriteMember("title"); writer.WriteValue(Object.Name); writer.WriteMember("type"); writer.WriteValue("object"); writer.WriteMember("properties"); AddJsonProperties(writer, Object.GetProperties(), false); if (required.Count > 0) { writer.WriteMember("required"); writer.WriteArray(); foreach (string requirement in required) { writer.WriteValue(requirement); } writer.WriteEndArray(); } writer.WriteEndObject(); writer.Flush(); stream.Position = 0; string unformattedJsonBody = new StreamReader(stream).ReadToEnd(); object parsedJson = JsonConvert.DeserializeObject(unformattedJsonBody); return JsonConvert.SerializeObject(parsedJson, Newtonsoft.Json.Formatting.Indented); }
public void Serialize(JsonWriter writer, object obj, JsonSerializer serializer) { if (obj == null) return; var issue = (Issue) obj; writer.WriteStartObject(); writer.WriteValue(RedmineKeys.ISSUE); writer.WriteProperty(RedmineKeys.SUBJECT, issue.Subject); writer.WriteProperty(RedmineKeys.DESCRIPTION, issue.Description); writer.WriteProperty(RedmineKeys.NOTES, issue.Notes); if (issue.Id != 0) { writer.WriteProperty(RedmineKeys.PRIVATE_NOTES, issue.PrivateNotes); } writer.WriteProperty(RedmineKeys.IS_PRIVATE, issue.IsPrivate); writer.WriteIdIfNotNull(RedmineKeys.PROJECT_ID, issue.Project); writer.WriteIdIfNotNull(RedmineKeys.PRIORITY_ID, issue.Priority); writer.WriteIdIfNotNull(RedmineKeys.STATUS_ID, issue.Status); writer.WriteIdIfNotNull(RedmineKeys.CATEGORY_ID, issue.Category); writer.WriteIdIfNotNull(RedmineKeys.TRACKER_ID, issue.Tracker); writer.WriteIdIfNotNull(RedmineKeys.ASSIGNED_TO_ID, issue.AssignedTo); writer.WriteIdIfNotNull(RedmineKeys.FIXED_VERSION_ID, issue.FixedVersion); writer.WriteValueOrEmpty(RedmineKeys.ESTIMATED_HOURS, issue.EstimatedHours); writer.WriteIdOrEmpty(RedmineKeys.PARENT_ISSUE_ID, issue.ParentIssue); writer.WriteDateOrEmpty(RedmineKeys.START_DATE, issue.StartDate); writer.WriteDateOrEmpty(RedmineKeys.DUE_DATE, issue.DueDate); writer.WriteDateOrEmpty(RedmineKeys.UPDATED_ON, issue.DueDate); if (issue.DoneRatio != null) writer.WriteProperty(RedmineKeys.DONE_RATIO, issue.DoneRatio.Value.ToString(CultureInfo.InvariantCulture)); if (issue.SpentHours != null) writer.WriteProperty(RedmineKeys.SPENT_HOURS, issue.SpentHours.Value.ToString(CultureInfo.InvariantCulture)); writer.WriteArray(RedmineKeys.UPLOADS, issue.Uploads, new UploadConverter(), serializer); writer.WriteArray(RedmineKeys.CUSTOM_FIELDS, issue.CustomFields, new IssueCustomFieldConverter(), serializer); writer.WriteIdsArray(RedmineKeys.WATCHER_USER_IDS, issue.Watchers); writer.WriteEndObject(); }