目录

前言 1.1

JSON概览 1.2

JSON常见问题 1.3

JSON相关 1.4

BSON 1.4.1

Pyton处理json 1.5

常见问题 1.5.1

附录 1.6

参考资料 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概览

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中不支持多行字符串

结论是：

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相关

JSON相关

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

BSON

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

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点

最外层缺少中括号=[]

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

每个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