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的相 ...
随机推荐
- django框架使用mysql步骤
在创建好django项目的基础上来讲解使用orm框架 注意:首先在mysql中手动或者通过命令创建一个数据库,我先创建一个名为orm的数据库. 1:在项目文件夹中的settings.py文件中配置my ...
- gcc链接,去掉不用的函数和data
编译代码的时候,没有用到的函数经常会被编译,该怎么才能去掉呢? 解决方法: CFLAGS 加上 -ffunction-sections -fdata-sections LDFLAGS 加上 --gc- ...
- 鸟哥Linux私房菜基础学习篇学习笔记3
鸟哥Linux私房菜基础学习篇学习笔记3 第十二章 正则表达式与文件格式化处理: 正则表达式(Regular Expression) 是通过一些特殊字符的排列,用以查找.删除.替换一行或多行文字字符: ...
- Android-PickerView【仿iOS的PickerView控件,并封装了时间选择和选项选择这两种选择器】使用
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 本文主要演示Android-PickerView的选项选择器.时间选择器的简单运用.由于每一个版本略有不用,所以实际使用方式以git ...
- 【Java】几道让你拿offer的知识点
前言 只有光头才能变强 之前在刷博客的时候,发现一些写得比较好的博客都会默默收藏起来.最近在查阅补漏,有的知识点比较重要的,但是在之前的博客中还没有写到,于是趁着闲整理一下. 文本的知识点: Inte ...
- [SpringBoot guides系列翻译]调用RESTfulWebService
原文 参考链接 CommandLineRunner Bean 翻译如何调用RESTful WebService 这节将演示如何在SpringBoot里面调用RESTful的WebService. 构建 ...
- 创建简单的npm脚手架
前言 vue-cli, webpack-cli 等脚手架是不是用起来爱不释手?自己写了个模版每次来回复制粘贴代码是不是很难维护?如果你是对前端.Node操作有一定的了解,同时也存在以上疑问,那就请尽情 ...
- C# 提前异步加载数据
前言 在我们应用程序中,如果有较大的数据需要从数据库或者本地读取,且是一次性的话,可以提前获取数据并缓存在内存中. 一般处理方法:利用应用程序启动到用户使用功能这一段时间,提前加载数据. 问题来了,因 ...
- asp.net easyui 动态绑定下拉框
前台: <title>标题</title> <link href="EasyUi_v1.3.4/easyui/themes/default/easyui.css ...
- win10安装tensorflow-gpu1.13.1+cuda10.0+cudnn7.3.1
一,本机配置 Win10 64bit NVIDIA GeForce GTX 960M Python3.7(Anaconda) 二,安装CUDA 亲测,TensorFlow-gpu1.13.1支持cud ...