Python json格式化打印实现过程解析


Posted in Python onJuly 21, 2020

编写python脚本,调试的时候需要打印json格式报文,直接打印看不出层次,可以使用json.dumps格式化打印

import json
import requests

def test_json():
  r=requests.get('https://home.testing-studio.com/categories.json')
  print(r.json())
  print(json.dumps(r.json(), indent=2,ensure_ascii=False)) # r.json()是json对象,indent表示缩进,ensure_ascii设置编码
格式化打印前:

格式化打印前:

Python json格式化打印实现过程解析

格式化打印后:

Python json格式化打印实现过程解析

json.dumps方法源码:

def dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True,
    allow_nan=True, cls=None, indent=None, separators=None,
    default=None, sort_keys=False, **kw):
  """Serialize ``obj`` to a JSON formatted ``str``.

  If ``skipkeys`` is true then ``dict`` keys that are not basic types
  (``str``, ``int``, ``float``, ``bool``, ``None``) will be skipped
  instead of raising a ``TypeError``.

  If ``ensure_ascii`` is false, then the return value can contain non-ASCII
  characters if they appear in strings contained in ``obj``. Otherwise, all
  such characters are escaped in JSON strings.

  If ``check_circular`` is false, then the circular reference check
  for container types will be skipped and a circular reference will
  result in an ``OverflowError`` (or worse).

  If ``allow_nan`` is false, then it will be a ``ValueError`` to
  serialize out of range ``float`` values (``nan``, ``inf``, ``-inf``) in
  strict compliance of the JSON specification, instead of using the
  JavaScript equivalents (``NaN``, ``Infinity``, ``-Infinity``).

  If ``indent`` is a non-negative integer, then JSON array elements and
  object members will be pretty-printed with that indent level. An indent
  level of 0 will only insert newlines. ``None`` is the most compact
  representation.

  If specified, ``separators`` should be an ``(item_separator, key_separator)``
  tuple. The default is ``(', ', ': ')`` if *indent* is ``None`` and
  ``(',', ': ')`` otherwise. To get the most compact JSON representation,
  you should specify ``(',', ':')`` to eliminate whitespace.

  ``default(obj)`` is a function that should return a serializable version
  of obj or raise TypeError. The default simply raises TypeError.

  If *sort_keys* is true (default: ``False``), then the output of
  dictionaries will be sorted by key.

  To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the
  ``.default()`` method to serialize additional types), specify it with
  the ``cls`` kwarg; otherwise ``JSONEncoder`` is used.

  """
  # cached encoder
  if (not skipkeys and ensure_ascii and
    check_circular and allow_nan and
    cls is None and indent is None and separators is None and
    default is None and not sort_keys and not kw):
    return _default_encoder.encode(obj)
  if cls is None:
    cls = JSONEncoder
  return cls(
    skipkeys=skipkeys, ensure_ascii=ensure_ascii,
    check_circular=check_circular, allow_nan=allow_nan, indent=indent,
    separators=separators, default=default, sort_keys=sort_keys,
    **kw).encode(obj)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 多进程通信模块的简单实现
Feb 20 Python
python链接Oracle数据库的方法
Jun 28 Python
python实现的希尔排序算法实例
Jul 01 Python
python访问mysql数据库的实现方法(2则示例)
Jan 06 Python
Python实现Linux的find命令实例分享
Jun 04 Python
Python使用openpyxl读写excel文件的方法
Jun 30 Python
使用pandas对两个dataframe进行join的实例
Jun 08 Python
Pytorch实现GoogLeNet的方法
Aug 18 Python
python库matplotlib绘制坐标图
Oct 18 Python
基于python的itchat库实现微信聊天机器人(推荐)
Oct 29 Python
Python爬取微信小程序Charles实现过程图解
Sep 29 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
Dec 01 Python
基于python实现删除指定文件类型
Jul 21 #Python
python打开音乐文件的实例方法
Jul 21 #Python
Python读取yaml文件的详细教程
Jul 21 #Python
Python中bisect的用法及示例详解
Jul 20 #Python
python为什么要安装到c盘
Jul 20 #Python
python如何代码集体右移
Jul 20 #Python
python接入支付宝的实例操作
Jul 20 #Python
You might like
memcached 和 mysql 主从环境下php开发代码详解
2010/05/16 PHP
利用PHP实现图片等比例放大和缩小的方法详解
2013/06/06 PHP
CI框架实现cookie登陆的方法详解
2016/05/18 PHP
PHP+MySql+jQuery实现的"顶"和"踩"投票功能
2016/05/21 PHP
PHP定时任务获取微信access_token的方法
2016/10/10 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
个人总结的一些关于String、Function、Array的属性和用法
2007/01/10 Javascript
豆瓣网的jquery代码实例
2008/06/15 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
Jquery对select的增、删、改、查操作
2015/02/06 Javascript
javascript设计模式--策略模式之输入验证
2015/11/27 Javascript
JavaScript实现二分查找实例代码
2017/02/22 Javascript
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
使用python实现rsa算法代码
2016/02/17 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
python+pygame实现坦克大战
2019/09/10 Python
Python多线程爬取豆瓣影评API接口
2019/10/22 Python
通过python实现windows桌面截图代码实例
2020/01/17 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
CSS3动画:5种预载动画效果实例
2017/04/05 HTML / CSS
英国马莎百货官网:Marks & Spencer
2016/07/29 全球购物
大学毕业生最详细的自我评价分享
2013/11/18 职场文书
电焊工工作岗位职责
2014/02/06 职场文书
企业年度评优方案
2014/06/02 职场文书
法定代表人资格证明书
2014/09/11 职场文书
计划生育工作汇报
2014/10/28 职场文书
感谢信的格式
2015/01/21 职场文书
病人家属写给医院的感谢信
2015/01/23 职场文书
薪资证明范本
2015/06/19 职场文书
2015小学师德工作总结
2015/07/21 职场文书
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python