/// <summary>
/// JObject和BsonValue之间的
/// </summary>
public static class AdapterExtensions
{ /// <summary>
///
/// </summary>
/// <param name="object"></param>
/// <returns></returns>
public static BsonDocument ToBsonDocument(this JObject @object)
{
IDictionary<String, Object> elems = new Dictionary<String, Object>(); ;
foreach (var item in @object)
elems[item.Key] = ToBsonValue(item.Value); return new BsonDocument(elems);
}
public static BsonArray ToBsonArray(this JArray array)
{
IList<BsonValue> bvs = new List<BsonValue>();
foreach (JToken item in array)
bvs.Add(ToBsonValue(item));
return new BsonArray(bvs);
}
private static BsonValue ToBsonValue(this JToken val)
{
if (val is JArray)
return ToBsonArray(val as JArray);
if (val is JObject)
return ToBsonDocument(val as JObject);
else
return ToBasicValue(val);
} private static BsonValue ToBasicValue(JToken @object)
{
switch (@object.Type)
{
case JTokenType.Integer:
return BsonValue.Create(@object.ToObject<Int32>());
case JTokenType.Float:
return BsonValue.Create(@object.ToObject<float>());
case JTokenType.String:
return BsonValue.Create(@object.ToObject<String>());
case JTokenType.Boolean:
return BsonValue.Create(@object.ToObject<Boolean>());
case JTokenType.Date:
return BsonValue.Create(@object.ToObject<DateTime>());
case JTokenType.Guid:
return BsonValue.Create(@object.ToObject<Guid>());
case JTokenType.Null:
return null;
default:
throw new Exception("");
}
} public static JObject ToJObject(this BsonDocument bsonDocument)
{
JObject elems = new JObject();
foreach (var item in bsonDocument)
{
Object data = item.Value;
elems[item.Name] = ToJsonValue(item.Value);
}
return elems;
}
public static JArray ToJArray(this BsonArray array)
{
IList<JToken> bvs = new List<JToken>();
foreach (var item in array)
bvs.Add(ToJsonValue(item));
return new JArray(bvs);
}
private static JToken ToJsonValue(this BsonValue val)
{
if (val is BsonArray)
return ToJArray(val as BsonArray);
if (val is BsonDocument)
return ToJObject(val as BsonDocument);
if (val is BsonNull)
return null;
return JToken.FromObject(val);
}
}

最新文章

  1. ios bitcode 机制对 dsym 调试文件的影响
  2. css3颜色
  3. 第三十八章 springboot+docker(maven)
  4. (译)JavaScript内存泄露
  5. 【查找结构5】多路查找树/B~树/B+树
  6. Trace和Debug主要用法
  7. SQL几个有点偏的语句
  8. css.day04
  9. Eclipse用法和技巧十三:自动生成的TODO注释1
  10. BPL vs. DLL
  11. es6的新内容
  12. [BZOJ]1093 最大半连通子图(ZJOI2007)
  13. 了解PID控制
  14. maven无法下依赖jar文件的解决方案
  15. vue中动态样式不起作用? scoped了解一下
  16. [MapReduce_5] MapReduce 中的 Combiner 组件应用
  17. MySQL 基础 简单操作
  18. node-webkit开发桌面应用
  19. C#代码优化—字符串拼接效率比较
  20. Mongo 后台加索引踩坑

热门文章

  1. Cocos Creator—最佳构建部署实践
  2. Cocos Creator—优化首页打开速度
  3. ReactNative之从“拉皮条”来看RN中的Spring动画
  4. [AI开发]centOS7.5上基于keras/tensorflow深度学习环境搭建
  5. C# 定时关机小程序
  6. [SpringBoot guides系列翻译]调用RESTfulWebService
  7. celery异步消息处理框架
  8. WPF 添加 Resources Dictionary 资源 一般类库项目中无法添加资源文件(ResourceDictionary)
  9. Java开发笔记(八十三)利用注解技术检查空指针
  10. easyui表格排序