目的
了解mongodb java驱动如何和mongod作数据交互,同时了解object json bson的数据格式解析过程
概述
mongodb采用的java转json是使用自定义的方法:com.mongodb.util.JSON类来处理;
转json:public static String serialize(Object o)
反转json:public static Object parse(String s)
那就看看这两个方法的具体实现
java object to json
mongodb java客户端的对象主要是DBObject及其之类,采用递归方式处理嵌套关系,我们也可以从中学习到如何将一个对象转为string类型的其他格式。
类型
|
转化方式
|
Null类型: |
字符串 null |
Boolean类型:对应的值 |
true
False |
Number类型:
Byte Short Integer Long Float Double
BigInteger BigDecimal AutomicInteger
AutomicLong |
返回对应数值的字符串 |
String类型:
这里的string类型主要是DBObject的key,
对于mongodb,DBObject的key为{“key”,...}这种格式,
因此要对特殊字符作处理,目前处理如下 |
\ -> \\ “ -> \* \n -> \\n \r -> \\r
\t -> \\t \b -> \\b
ASCII为32之前的字符都忽略,这些是控制字符
举例:
abc -> “abc”
“abc -> “\”abc”
a\b”c -> “a\\b\”c” |
ObjectId类型:
对于ObjectId类型,先转成BasicDBObject方式再进行解析
{“$oid”, objectId.toString()} |
如objectId为:789dsab4adafasdfsdfasdf873294
{“$oid” : 789dsab4adafasdfsdfasdf873294} |
Iterable类型:
对于迭代起类型,递归调用每个类型进行处理 |
字符迭代器:[abc, bcd, cde, def ]
DBObject迭代器:[{“abc”, value}, {“bcd”, value }, {“cde”, def} ] |
DBObject类型:
根据简单类型递归处理 |
转成形如:
{key:{key,value}, key:value} |
Map类型:
这个基本不用想了,因为DBObject本身就继承自map,
所以map的解析和DBObject一致 |
同上 |
Date类型: |
{“$date”, "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"} |
DBRefBase类型:
转成DBObject |
{”$ref”, ref.getRef(), “$id”, ref.getId()} |
byte[]或者Binary: |
<Binary Data> |
数组类型: |
[“key”:”value”, “key”:”value”] |
Pattern类型:
转DBObject |
{"$regex": o.toString(), $options: Bytes.regexFlags(((Pattern) o).flags())} |
BSONTimestamp类型:
转DBObject |
{“$ts”:t.getTime(), “$inc”:t.getInc()} |
UUID类型:
转DBObject |
{"$uuid":uuid.toString()} |
CodeWScope类型:
转DBObject |
{"$code":c.getCode(), "$scope": c.getScope()} |
Code类型:
转DBObject |
{"$code":c.getCode()} |
MinKey类型:
转DBObject |
{$minKey":1} |
MaxKey类型:
转DBObject |
{"$maxKey":1} |
json to java object
处理的内容比较明确:
以上讨论针对的是java对象转成json对象,接下去讨论json对象转化为bson对象。
这方面的内容bson连接讨论的比较详细,url为:http://bsonspec.org/#/specification
不过看了这个文档1个小时后终于把这个文档的两个事例看懂,因此有必要在这里说明下,以便其他观看文档的人更容易理解
json to bson
还是现来看一下文档中提到的两个例子。
先看第一个
以上简单格式解析基本能对应上,再来看第二个例子:
以上两个列子基本上能了解如何把一个json对象转成bson对象了,这样在wireshark协议时基本上也没什么问题。
bson to json
1.如何判断key,value编码方式:
每字节读取,分析字节是否为[0,127];是:表示为纯英文;如果有一个字符不为这个范围内的字符,表示包含其他字符方式,采用utf-8方式解码
2.
后续继续更新上去,可直接看mongodb源代码
https://github.com/michel-kraemer/bson4jackson
分享到:
相关推荐
mongodb java驱动包3.2.1版本
MongoDBjava各版本驱动下载
mongoDB java 驱动 mongoDB java 驱动 mongoDB java 驱动 mongoDB java 驱动
MongoDBjava驱动源码程序,适合大神们研究学习。
MongoDB、Java与对象关系映射 MongoDB、Java与对象关系映射
MongoDB Java操作大全 源代码 实例
MongoDB的Java驱动包 。3.8版本,MongoDB官网https://www.mongodb.com/
mongodb-java-driver-4.4.0.jar
mongodb 用于开发所需要的驱动jar包以及jar包所对应的源码(包含驱动jar:mongod-driver-3.8.0.jar;json处理jar :bson和gson),供学习和使用,
mongodb java 驱动
MongoDB实现增删改查,java程序驱动,复杂查询,源代码示例
目前各类语言都有MongoDB的驱动支持,Java语言的驱动较为完善也很稳定!
mongodb的java驱动3.2版本
mongoDB java driver api mongoDB java 驱动 所有类的api
mongdobd的java驱动,包括mongodb-driver-3.7.0.jar,mongodb-driver-core-3.7.0.jar,bson-3.7.0.jar 3个必要的
这是一个java的mongodb的驱动包,使用它就能够与用java去连接mongodb服务器,和操作mongodb
MongoDB Java驱动程序文档该存储库包含有关MongoDB Java驱动程序的文档。建立和上演要构建和文档,请使用 。 要使snooty autobuilder在您的fork上运行,请根据autobuilder设置指南添加一个webhook。 如果您无法访问...
亲测可用,解压包含三个jar包,引用时sources和doc包根据需要添加。 mongo-java-driver-3.5.0.jar; mongo-java-driver-3.5.0-javadoc.jar; mongo-java-driver-3.5.0-sources.jar;
MongoDB Java Driver 简单操作