public static object DeserializeObject(Datum value, Type type, JsonSerializerSettings settings) { Demand.Require(value != null, "Can't deserialize null value."); var serializer = JsonSerializer.CreateDefault(settings); return(serializer.Deserialize(new DatumReader(value), type)); }
private void ReadDatum(Datum datum, ReadAs?readAs = null) { if (ReadAsSpecialType(datum, readAs)) { return; } switch (datum.type) { case Datum.DatumType.R_NUM: SetToken(JsonToken.Float, datum.r_num); return; case Datum.DatumType.R_STR: SetToken(JsonToken.String, datum.r_str); return; case Datum.DatumType.R_BOOL: SetToken(JsonToken.Boolean, datum.r_bool); return; case Datum.DatumType.R_NULL: SetToken(JsonToken.Null); return; //The datum stores more structure case Datum.DatumType.R_ARRAY: SetToken(JsonToken.StartArray); stack.Push(new DatumReaderToken(datum)); return; case Datum.DatumType.R_OBJECT: SetToken(JsonToken.StartObject); stack.Push(new DatumReaderToken(datum)); return; default: Demand.Require(true, "Unknown handing datum type {0}.", datum.type); return; } }