private void WriteJson(SimoJson json, ISimoBsonWriter writer) { WriteAsBson(json.ToKeyValue(), writer); }
private void WriteAsBson(object value, ISimoBsonWriter writer) { writer.Write(value); }
private void WriteJson(SimoJson json, ISimoBsonWriter writer) { var dval = json.ToKeyValue(); Dictionary<string, object> dvalTo = new Dictionary<string, object>(); foreach (KeyValuePair<string, object> kv in dval) { if ((kv.Key == "_id" || kv.Key[0] == '!') && kv.Value.GetType() == typeof(string)) { string val = kv.Value as string; if (val.StartsWith("-oid-")) { val = val.Substring(5); byte[] nv = Convert.FromBase64String(val); dvalTo.Add((kv.Key[0] == '!') ? kv.Key.Substring(1) : "_id", new Newtonsoft.Json.Bson.BsonObjectId(nv)); } } else { dvalTo.Add(kv.Key, kv.Value); } } WriteAsBson(dvalTo, writer); }