public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { if (value == typeof(TimerItemEntity)) { // cast TimerItemEntity entity = (TimerItemEntity)value; // build ToObject(entity).WriteTo(writer); } else { // cast TimerItemEntity[] entities = (TimerItemEntity[])value; JObject[] objs = new JObject[entities.Length]; for (int i = 0; i < objs.Length; i++) { objs[i] = ToObject(entities[i]); } new JArray(objs).WriteTo(writer); } }
private JObject ToObject(TimerItemEntity entity) { JObject obj = new JObject(); obj["type"] = entity.Type; if (entity.Type == "device") { obj["device_uuid"] = entity.DeviceUUID; obj["service_uuid"] = entity.ServiceUUID; obj["characteristic_uuid"] = entity.CharacteristicUUID; } if (entity.Type == "group") { obj["group_uuid"] = entity.GroupUUID; } return(obj); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { // load next token JToken nextToken = JToken.Load(reader); if (nextToken.Type == JTokenType.Array) { JArray arr = (JArray)nextToken; TimerItemEntity[] entities = new TimerItemEntity[arr.Count]; for (int i = 0; i < arr.Count; i++) { entities[i] = FromObject((JObject)arr[i]); } return(entities); } // build return(FromObject((JObject)nextToken)); }