JToken和BsonValue对象的相互转换
/// <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对象的相互转换的更多相关文章
- DOM对象与jQuery对象的相互转换
DOM 对象可以使用 js 中的方法, 不能使用jQuery中的方法:jQuery对象只能使用jQuery中的方法, 不能使用js中的方法:jQuery对象是通过jQuery包装DOM ...
- Js(DOM) 和Jq 对象的相互转换
JQuery 对象不能使用DOM对象中的方法,同样,Dom对象 不能使用JQuery 中的方法,但有时候 ,我们不得不使用JQuery的方法或者 Dom对象的方法,该怎么办呢? 下面介绍一下 jq对象 ...
- jquery对象与js对象的相互转换
jQuery对象转成DOM对象: 两种转换方式将一个jQuery对象转换成DOM对象:[index]和.get(index); (1)jQuery对象是一个数据对象,可以通过[index]的方法,来得 ...
- Json字符与Json对象的相互转换
Json字符与Json对象的相互转换方式有很多,接下来将为大家一一介绍下,感兴趣的朋友可以参考下哈,希望可以帮助到你 1>jQuery插件支持的转换方式: 复制代码 代码如下: $.parseJ ...
- java DTO对象与PO对象的相互转换
2018-09-27 10:27:50 前言: 在实际开发中往往需要DTO对象与PO对象的相互转换: 先说说什么是DTO对象吧,个人觉得DTO就是PO的扩展而已,PO专门指向数据库,DTO作扩展(字段 ...
- C# Json 和对象的相互转换
Json 和对象的相互转换 /// <summary> /// Json 和对象的相互转换 ——需引用using Newtonsoft.Json; 即:Jsonnet.net..... / ...
- jquery对象和DOM对象的相互转换详解
jquery对象和DOM对象的相互转换 在讨论jquery对象和DOM对象的相互转换之前,先约定好定义变量的风格如果获取的是jquery对象,那么在变量前面加上$,例如 var $varible = ...
- JSON的String字符串与Java的List列表对象的相互转换
1.JSON的String字符串与Java的List列表对象的相互转换 在前端: 1.如果json是List对象转换的,可以直接遍历json,读取数据. 2.如果是需要把前端的List对象转换为jso ...
- JSON数据与Java对象的相互转换
JSON数据与Java对象的相互转换 JSON解析器 常见的解析器:Jsonlib .Gson. fastjson. jackson JSON转化为Java对象 使用步骤: 1.导入jackson的相 ...
随机推荐
- 使用xUnit为.net core程序进行单元测试(1)
导读 为什么要编写自动化测试程序(Automated Tests)? 可以频繁的进行测试 可以在任何时间进行测试,也可以按计划定时进行,例如:可以在半夜进行自动测试. 肯定比人工测试要快. 可以更快速 ...
- 学习Identity Server 4的预备知识 (误删, 重补)
我要使用asp.net core 2.0 web api 搭建一个基础框架并立即应用于一个实际的项目中去. 这里需要使用identity server 4 做单点登陆. 下面就简单学习一下相关的预备知 ...
- WebPack引用Bootstrap 无法使用图标的结局方案
npm i https://github.com/iconic/open-iconic.git -D 因为boostrap的css里删除了图标 分开了 我们在引入个呵呵. 下载:npm i boot ...
- JVM回收器与调优
定义: 使用编程语言将GC算法实现出来,产生的程序就是垃圾搜集器了 JVM给了三种选择:串行收集器.并行收集器.并发收集器 串行搜集器(serial collector):它只有一条GC线程,且就像前 ...
- js简单四则运算
作业来源 本次作业要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2166 我的项目GitHub远程仓库地址:https:/ ...
- .NET运行时中的监测和可观测性
今年5月份的时候研究分布式追踪的问题知道了的拦截方式比较零散, 刚好8月份的时候看到这篇文章,这个文章总结的比较完整.存档了很久,趁今天有空翻译给大家.原文地址,校验:张蘅水 .NET是一个托管运行时 ...
- SLAM+语音机器人DIY系列:(二)ROS入门——5.编写简单的消息发布器和订阅器
摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...
- 【资料总结】| Deep Reinforcement Learning 深度强化学习
在机器学习中,我们经常会分类为有监督学习和无监督学习,但是尝尝会忽略一个重要的分支,强化学习.有监督学习和无监督学习非常好去区分,学习的目标,有无标签等都是区分标准.如果说监督学习的目标是预测,那么强 ...
- AI产品的商业模式
AI产品的商业模式 ------------------------------------------------------------------------------------------ ...
- [orleans2.1]这是你没玩过的船新版本
不知不觉orleans就发布到2.1版本的,但是说也奇怪orleans越是完善我发现园子相关的博客就越少,大概是大佬都在美滋滋用在生产环境,不屑于玩demo了吧. 但是小弟不才还是只会玩demo,所以 ...