public static void Deserialize(this IJsonDeserializable obj, Stream content) { using (JsonDocument json = JsonDocument.Parse(content, default)) { obj.ReadProperties(json.RootElement); } }
public static void Deserialize(this IJsonDeserializable deserializable, Dictionary <string, object> json) { var fields = deserializable.GetType().GetJsonSerializedFields(); json.Keys.ToList().ForEach(fieldName => { var field = fields.FirstOrDefault(f => f.Name == fieldName); if (field == null) { return; } var value = json[fieldName]; field.SetValue(deserializable, DeserializeValue(value, field.FieldType)); }); if (deserializable is IJsonDeserializableCustom) { ((IJsonDeserializableCustom)deserializable).DeserializeCustom(json); } }
public static void FromJsonString(this IJsonDeserializable jsonObject, string jsonString) { if (ReferenceEquals(jsonObject, null)) { throw new ArgumentNullException("jsonObject"); } using (var reader = JSON.GetReader(new StringReader(jsonString))) { while (reader.TokenType != JsonToken.StartObject) { if (!reader.Read()) { return; } } try { jsonObject.FromJson(reader); } catch (Exception ex) { if (Log != null) { Log.WarnFormat( "Unable to serialize component: {0} - {1}", jsonObject.GetType().FullName, ex.Message ); } throw; } } }