ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

浅谈JSON和BSON

2021-05-21 11:34:11  阅读:219  来源: 互联网

标签:浅谈 python list json JSON dict BSON x00


JSON (JavaScript Object Notation)JavaScript对象表示法,是一种轻量级的数据交换格式。JSON 是存储和交换文本信息的语法,类似 XML。比 XML 更小、更快,更易解析。
感觉JSON源于互联网,针对互联网信息的表示、存储,非常方便。并由此产生了BSON,BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,
支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。BSON有三个特点:轻量性、可遍历性、高效性。
以上的解释都有些枯燥,更直白地说,用JSON的键值对表示html/JS这些互联网的数据非常方便。比如python中的字典、列表:
import json
data_dict = {
'id': 1,
'name': 'Runoob',
'url': 'http://www.runoob.com'
}
data_list = [1,2,3,4,5]
json_str_dict = json.dumps(data_dict)
json_str_list = json.dumps(data_list)
print(type(json_str_dict),json_str_dict,repr(json_str_dict))
#>>><class 'str'> {"id": 1, "name": "Runoob", "url": "http://www.runoob.com"} '{"id": 1, "name": "Runoob", "url": "http://www.runoob.com"}'
print(type(json_str_list),json_str_list,repr(json_str_list))
#>>><class 'str'> [1, 2, 3, 4, 5] '[1, 2, 3, 4, 5]'
通过以上输出来看,python字典数据、列表数据经过json转换后,变为json的str字符串类型。
而json数据再转回python数据也是很方便的:
python_dict=json.loads(json_str_dict)
python_list=json.loads(json_str_list)
print(type(python_dict),python_dict,repr(python_dict))
#>>><class 'dict'> {'id': 1, 'name': 'Runoob', 'url': 'http://www.runoob.com'} {'id': 1, 'name': 'Runoob', 'url': 'http://www.runoob.com'}
print(type(python_list),python_list,repr(python_list))
#>>><class 'list'> [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
不知道是python成就了json,还是json成就了python。感觉二者之间的联系,不能更密切了吧?比如你可以定义一些json格式的文件,为python程序提供输入或者配置。而python
程序的一些输出结果,也可以用JSON文件存储。python读取、写入JSON文件的程序在这里先不进行,其实也很容易。
再谈BSON,后来的MongoDB数据库专门来存储、管理BSON数据。而BSON又是JSON的二进制格式,那么是否可以认为MongoDB就是从文件管理到数据库管理的一个升级?
或者说,当存在大量的JSON文件的时候,如何管理如何查询如何修改,毕竟这方面是文件的一个劣势,而数据库就应运而生呢?
bson_byte_dict=bson.encode(data_dict)
print(type(bson_byte_dict),bson_byte_dict,repr(bson_byte_dict))
#>>><class 'bytes'>
b'=\x00\x00\x00\x10id\x00\x01\x00\x00\x00\x02name\x00\x07\x00\x00\x00Runoob\x00\x02url\x00\x16\x00\x00\x00http://www.runoob.com\x00\x00'
b'=\x00\x00\x00\x10id\x00\x01\x00\x00\x00\x02name\x00\x07\x00\x00\x00Runoob\x00\x02url\x00\x16\x00\x00\x00http://www.runoob.com\x00\x00'
从上面可以看出,bson通过encode函数处理python的dict数据,变为二进制bytes类型。而且,也很容易再转换回来:
python_dict = bson.decode(bson_byte_dict)
print(type(python_dict), python_dict, repr(python_dict))
#>>><class 'dict'>
{'id': 1, 'name': 'Runoob', 'url': 'http://www.runoob.com'}
{'id': 1, 'name': 'Runoob', 'url': 'http://www.runoob.com'}
总结上述,JSON、BSON、MongoDB相比于之前的传统关系型数据库,在存储互联网数据方面有很大的优势。而且对于大数据分布式平台来说,Nosql的数据库更方便做分布式处理。当然也
可以不用python语言作为中间的纽带,java一定也可以。


标签:浅谈,python,list,json,JSON,dict,BSON,x00
来源: https://www.cnblogs.com/dingzy1972/p/14793062.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有