目录

1. 前言   1.1

2. JSON概览   1.2

3. JSON常见问题   1.3

4. JSON相关   1.4

1. BSON   1.4.1

5. Pyton处理json   1.5

1. 常见问题   1.5.1

6. 附录   1.6

1. 参考资料   1.6.1

主流数据格式：JSON

- 最新版本： v0.1

- 更新时间： 20210914

简介

介绍主流的常见的数据格式JSON

源码+浏览+下载

本书的各种源码、在线浏览地址、多种格式文件下载如下：

Gitbook源码

- crifan/common_data_format_json: 主流数据格式：JSON

如何使用此Gitbook源码去生成发布为电子书

详见：crifan/gitbook_template: demo how to use crifan gitbook template and demo

在线浏览

- 主流数据格式：JSON book.crifan.com

- 主流数据格式：JSON crifan.github.io

离线下载阅读

- 主流数据格式：JSON PDF

- 主流数据格式：JSON ePub

- 主流数据格式：JSON Mobi

版权说明

此电子书教程的全部内容，如无特别说明，均为本人原创和整理。其中部分内容参考自网络，均已备注了出处。如有发现侵犯您版权，请通过邮箱联系我  admin 艾特 crifan.com ，我会尽快删除。谢谢合作。

鸣谢

感谢我的老婆陈雪的包容理解和悉心照料，才使得我 crifan 有更多精力去专注技术专研和整理归纳出这些电子书和技术教程，特此鸣谢。

更多其他电子书

本人 crifan 还写了其他 100+ 本电子书教程，感兴趣可移步至：

crifan/crifan_ebook_readme: Crifan的电子书的使用说明

crifan.com，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2021-09-14 13:15:50

JSON概览

TODO：

合并 旧教程

JSON详解

https://www.crifan.com/files/doc/docbook/json_tutorial/release/html/json_tutorial.html

- JSON是什么

- 一种数据格式

- 很常见的

- 用途广泛

- 哪里用到了JSON

- HTTP REST api

- 很多http的rest的api接口中，数据传输往往多数都用JSON

- 非关系型数据库

- MongoDB

- PostgreSQL

- 库

- Python 的 json

crifan.com，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2021-09-14 11:58:29

JSON常见问题

JSON中不支持多行字符串

结论是：

JSON语法规范本身就说了：

- 不能包含换行符

- 换行符属于： 控制字符 = control character

- JSON规范就不支持 控制字符

- JSON规范支持 \n （这是两个字符）

规避办法：

- 方案1：把 单个的表示换行的控制字符 \n  ，保存为  "\n" （2个字符，一个是 反斜杠 ，一个是字母 n ）

- 这样前端，比如web端，小程序段，移动端等，自己再去替换"\n"为\n

- 比如：

- "this is first line 此处想要换行and second line"

- 保存为：

- "this is first line \nand second line"

- 方案2：把包含换行的字符串，保存为字符串列表，每个字符串是换行后的某一行

- 比如：

"this is first line

and second line"

- 保存为：

[

"this is first line"

"and second line"

]

crifan.com，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2021-09-14 13:12:03

JSON相关

crifan.com，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2021-09-14 13:12:51

BSON

- BSON = Binary JSON

- 规范

- BSON (Binary JSON) Serialization

- http://bsonspec.org

- BSON (Binary JSON): Implementations

- http://bsonspec.org/implementations.html

- BSON (Binary JSON): FAQ

- http://bsonspec.org/faq.html

crifan.com，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2021-09-14 13:14:20

Pyton处理json

- Python内置库：json

- json — JSON encoder and decoder — Python 3.8.2rc1 documentation

- https://docs.python.org/3/library/json.html

crifan.com，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2021-09-14 11:58:17

常见问题

此处整理Python处理json期间，遇到的一些问题。

Python处理ISODate的json

问题：

python读取json文件时遇到ISOdate，会报错，怎么处理能够读取数据，新手小白一枚-CSDN论坛

{

"createtime" : ISODate("2020-06-24T06:29:33.473Z"),

"updatetime" : ISODate("2020-07-09T02:23:04.553Z")

}

{

"createtime" : ISODate("2020-06-24T06:38:15.86Z"),

"updatetime" : ISODate("2020-07-09T02:35:42.092Z")

}

{

"createtime" : ISODate("2020-06-24T07:00:33.919Z"),

"updatetime" : ISODate("2020-08-14T07:01:36.704Z")

}

解答：

你这个json数据=json格式的字符串，不合法 = 不符合JSON的语法

具体有3点

1. 最外层缺少中 括号 = []

2. 每个dict字典之间缺少 逗号=``,

3. 每个dict字典内部有多余的ISODate-》需要改为字符串本身

比如 应该 可以 改为：

[

{

"createtime": "2020-06-24T06:29:33.473Z",

"updatetime": "2020-07-09T02:23:04.553Z"

},

{

"createtime": "2020-06-24T06:38:15.86Z",

"updatetime": "2020-07-09T02:35:42.092Z"

},

{

"createtime": "2020-06-24T07:00:33.919Z",

"updatetime": "2020-08-14T07:01:36.704Z"

}

]

才能被正确解析

不过此处的时间是字符串，想要转换为Datetime的对象

需要先了解

ISO 8601 - 维基百科，自由的百科全书

ISO 8601 - Wikipedia

Date and Time Formats

格式：

Complete date plus hours, minutes, seconds and a decimal fraction of a second

YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45+01:00)

举例

1994-11-05T13:15:30Z

TODO：

加上Python代码

演示如何把上述 ISO 8601的日期时间的字符串

"2020-06-24T06:38:15.86Z”

"2020-07-09T02:35:42.092Z"

转换为 Datetime 对象

crifan.com，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2021-09-14 12:02:21

附录

下面列出相关参考资料。

crifan.com，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2020-03-17 09:11:34

参考资料

- 【已解决】小程序端如何显示换行符使得文字分段显示

- 【规避解决】MongoDB中如何更新某字段的值为带换行的文字

- Tutorial — PyMongo 3.5.1 documentation

- json — JSON encoder and decoder — Python 3.8.2rc1 documentation

- 6.2 读写JSON数据 — python3-cookbook 3.0.0 文档

crifan.com，使用署名4.0国际(CC BY 4.0)协议发布 all right reserved，powered by Gitbook最后更新： 2021-09-14 13:13:52

Table of Contents

前言

JSON概览

JSON常见问题

JSON相关

BSON

Pyton处理json

常见问题

附录

参考资料