/// <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. 如何在eclipse中快速debug到想要的参数条件场景下

    前言 俗话说,工欲善其事必先利其器. 对于我们经常使用的开发工具多一些了解,这也是对我们自己工作效率的一种提升. 场景 作为开发,我们经常会遇到各种bug,大部分的bug很明确,我们直接可以打断点定位 ...

  2. 两篇文章带你走入.NET Core 世界:Kestrel+Nginx+Supervisor 部署上云服务器(二)

    背景: 上一篇:两篇文章带你走入.NET Core 世界:CentOS+Kestrel+Ngnix 虚拟机先走一遍(一) 已经交待了背景,这篇就省下背景了,这是第二篇文章了,看完就木有下篇了. 直接进 ...

  3. Kafka 消费者相关配置

    消费者相关配置类为  org.apache.kafka.clients.consumer.ConsumerConfig 具有以下配置参数 1. GROUP_ID_CONFIG = "grou ...

  4. React的入门知识与概念【1】

    回顾在以往的项目开发中,从最初的使用的原生html+js+css+jquery开发,到后来随着项目功能的增加,也渐渐学习了Vue.js框架的开发,以及Vue.js的全家桶Axios,Vue-route ...

  5. Redis学习笔记~Twenproxy所起到的作用

    回到目录 Twenproxy除了可以作为redis的代理,它同样支持memerycached.我这里主要了解Twemproxy在redis集群上的解决方案.Twemproxy除了完美的解决了分片,路由 ...

  6. 从PRISM开始学WPF(五)MVVM(一)ViewModel-更新至Prism7.1

    0x5 MVVM [7.1updated]截止到目前,我们看到7.1的更新主要在三个地方 PrismApplication ,并且不再使用Bootstrapper 更新了unity,现在使用prism ...

  7. 网站集群架构(LVS负载均衡、Nginx代理缓存、Nginx动静分离、Rsync+Inotify全网备份、Zabbix自动注册全网监控)--技术流ken

    前言 最近做了一个不大不小的项目,现就删繁就简单独拿出来web集群这一块写一篇博客.数据库集群请参考<MySQL集群架构篇:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高 ...

  8. WebAPI Angularjs 上传文件

    直接上代码 HTML页面代码: <label>资源URL</label> <input type="text" class="form-co ...

  9. Java虚拟机判定对象存活算法

    1.引用计数算法 描述:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器值为0的对象就是不可能再被使用的. 特点:实现简单,判定效率高. ...

  10. Java面试 32个核心必考点完全解析

    目录 课程预习 1.1 课程内容分为三个模块 1.2 换工作面临问题 1.3 课程特色 课时1:技术人职业发展路径 1.1 工程师发展路径 1.2 常见技术岗位划分 1.3 面试岗位选择 1.4 常见 ...