/// <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);
}
}

JToken和BsonValue对象的相互转换的更多相关文章

  1. DOM对象与jQuery对象的相互转换

    DOM  对象可以使用 js       中的方法,  不能使用jQuery中的方法:jQuery对象只能使用jQuery中的方法, 不能使用js中的方法:jQuery对象是通过jQuery包装DOM ...

  2. Js(DOM) 和Jq 对象的相互转换

    JQuery 对象不能使用DOM对象中的方法,同样,Dom对象 不能使用JQuery 中的方法,但有时候 ,我们不得不使用JQuery的方法或者 Dom对象的方法,该怎么办呢? 下面介绍一下 jq对象 ...

  3. jquery对象与js对象的相互转换

    jQuery对象转成DOM对象: 两种转换方式将一个jQuery对象转换成DOM对象:[index]和.get(index); (1)jQuery对象是一个数据对象,可以通过[index]的方法,来得 ...

  4. Json字符与Json对象的相互转换

    Json字符与Json对象的相互转换方式有很多,接下来将为大家一一介绍下,感兴趣的朋友可以参考下哈,希望可以帮助到你 1>jQuery插件支持的转换方式: 复制代码 代码如下: $.parseJ ...

  5. java DTO对象与PO对象的相互转换

    2018-09-27 10:27:50 前言: 在实际开发中往往需要DTO对象与PO对象的相互转换: 先说说什么是DTO对象吧,个人觉得DTO就是PO的扩展而已,PO专门指向数据库,DTO作扩展(字段 ...

  6. C# Json 和对象的相互转换

    Json 和对象的相互转换 /// <summary> /// Json 和对象的相互转换 ——需引用using Newtonsoft.Json; 即:Jsonnet.net..... / ...

  7. jquery对象和DOM对象的相互转换详解

    jquery对象和DOM对象的相互转换 在讨论jquery对象和DOM对象的相互转换之前,先约定好定义变量的风格如果获取的是jquery对象,那么在变量前面加上$,例如 var $varible = ...

  8. JSON的String字符串与Java的List列表对象的相互转换

    1.JSON的String字符串与Java的List列表对象的相互转换 在前端: 1.如果json是List对象转换的,可以直接遍历json,读取数据. 2.如果是需要把前端的List对象转换为jso ...

  9. JSON数据与Java对象的相互转换

    JSON数据与Java对象的相互转换 JSON解析器 常见的解析器:Jsonlib .Gson. fastjson. jackson JSON转化为Java对象 使用步骤: 1.导入jackson的相 ...

随机推荐

  1. 说一下Dubbo 的工作原理?注册中心挂了可以继续通信吗?

    面试题 说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程? 面试官心理分析 MQ.ES.Redis.Dubbo,上来先问你一些思考性的问题.原理,比如 kaf ...

  2. jquery ajax跨域请求后台的简单例子

    一.简介AJAX 是与服务器交换数据的技术,它在不重载全部页面的情况下,实现了对部分网页的更新. ajax() 方法通过 HTTP 请求加载远程数据. 该方法是 jQuery 底层 AJAX 实现.简 ...

  3. JDK、JRE、JVM三者间的联系与区别

    有Java编程经验的程序员应该都知道:Java程序是运行在JVM(Java虚拟机)上的,在开发程序之前都要配置Java开发环境,其中首先要做的就是JDK的安装和配置,那么JDK.JVM.JRE到底有何 ...

  4. 中国IT史上两大严重事故对我们的警醒及预防措施

    20190121 一,历史回顾:20150528携程运维大事故 2015年5月28日上午11点开始,携程旅行网官方网站突然显示404错误页,App也无法使用,业务彻底中断. 据称是因为乌云网公布了携程 ...

  5. javaScript设计模式之面向对象编程(object-oriented programming,OOP)--寄生组合式继承

    组合式继承:将类式继承同构造函数继承组合使用,但是存在一个问题,子类不是父类的实例,而子类的原型式父类的实例,所以才有了寄生组合式继承. 意思就是说,寄生就是寄生式继承,寄生式继承就是依托于原型继承, ...

  6. GetPathFromUri4kitkat【Android 4.4 kitkat以上及以下根据uri获取路径的方法】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 在Android4.4之前和之后,通过Intent调用文件管理器选择文件,获取的文件uri地址形式是不同的. Android6.0 ...

  7. spring里的三大拦截器

    Filter 新建 TimeFilter @Component public class TimeFilter implements Filter { @Override public void in ...

  8. parsing:NLP之chart parser句法分析器

    已迁移到我新博客,阅读体验更佳parsing:NLP之chart parser句法分析器 完整代码实现放在我的github上:click me 一.任务要求 实现一个基于简单英语语法的chart句法分 ...

  9. RDIFramework.NET V3.3 WinForm版新增订单管理主从表事例

    功能描述 无论什么系统,除了常规的单表处理外,主从表的应用都是非常普遍的,RDIFramework.NET V3.3 WinForm版本中新增了一个主从表的事例供大家参考.主从表的界面设计大同小异,主 ...

  10. c#中缓存的使用

    缓存的使用: 缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题.提供高性能的数据快速访问,提高数据的读取速度.因为服务器和应用客户端之间存在着流量的瓶颈,所以读取大容 ...