📜  Python中的JSON格式化formatting(1)

📅  最后修改于: 2023-12-03 15:34:25.043000             🧑  作者: Mango

Python中的JSON格式化 Formatting

简介

在Python中,JSON(JavaScript Object Notation)是一种用于数据交换的轻量级格式,它是基于JavaScript的一个子集。JSON使用轻量级的文本格式来描述数据对象,用于发送和接收数据。Python中的json库可以用来编码和解码JSON数据。JSON数据可以被编码为Python数据结构,然后在Python中进行处理。

在编码JSON数据时,通常需要遵循一定的格式规则,这就是JSON的格式化。本文将介绍Python中的JSON格式化,包括如何使用json库对JSON数据进行格式化操作。

JSON格式化基础

JSON格式化是指按照一定的规则,将JSON数据按照美观易读的方式进行排版,使其更容易被人类阅读和理解。JSON数据格式的基本规则如下:

  1. JSON数据结构必须是正确的嵌套。

  2. 每个键都必须用双引号(")括起来,而不是单引号(')。

  3. 字段名和值之间必须用冒号(:)分隔。

  4. 多个键-值对之间必须用逗号(,)分隔。

  5. 对象必须用花括号({})括起来,数组必须用方括号([])括起来。

  6. JSON数据不能包含函数、日期等Python特定的对象。

下面是一个简单的JSON格式化示例:

{
    "name": "Tom",
    "age": 21,
    "contact": {
        "email": "tom@qq.com",
        "tel": "123456789"
    },
    "friends": [
        {
            "name": "Jerry",
            "age": 20
        },
        {
            "name": "Bob",
            "age": 22
        }
    ]
}
使用json库对JSON数据进行格式化操作

Python中的json库提供了多种对JSON数据进行编解码和格式化的函数,其中最常用的是dumps和dump函数,它们都可以将Python数据类型转换为JSON格式的字符串。而load和loads则是将JSON格式的字符串转换为Python数据类型。

  1. dumps函数

dumps函数用于将Python数据类型转换成JSON格式的字符串,并进行格式化。它接受四个参数:obj、skipkeys、ensure_ascii、sort_keys。其中,obj表示需要转换的Python对象,skipkeys默认为False,表示不忽略非字符串的键;ensure_ascii也默认为True,表示将所有非ASCII字符转义;sort_keys默认为False,表示按照键的插入顺序输出。

示例代码如下:

import json

data = {
  "name": "Tom",
  "age": 21,
  "contact": {
    "email": "tom@qq.com",
    "tel": "123456789"
  },
  "friends": [
    {
      "name": "Jerry",
      "age": 20
    },
    {
      "name": "Bob",
      "age": 22
    }
  ]
}

json_str = json.dumps(data, indent=4, sort_keys=True, ensure_ascii=False)
print(json_str)

输出结果如下:

{
    "age": 21,
    "contact": {
        "email": "tom@qq.com",
        "tel": "123456789"
    },
    "friends": [
        {
            "age": 20,
            "name": "Jerry"
        },
        {
            "age": 22,
            "name": "Bob"
        }
    ],
    "name": "Tom"
}
  1. dump函数

dump函数用于将Python数据类型转换成JSON格式的字符串,并写入文件。它接受三个参数:obj、fp、skipkeys。其中,obj表示需要转换的Python对象,fp为写入文件的句柄,skipkeys默认为False,表示不忽略非字符串的键。

示例代码如下:

import json

data = {
  "name": "Tom",
  "age": 21,
  "contact": {
    "email": "tom@qq.com",
    "tel": "123456789"
  },
  "friends": [
    {
      "name": "Jerry",
      "age": 20
    },
    {
      "name": "Bob",
      "age": 22
    }
  ]
}

with open('data.json', 'w', encoding='utf-8') as f:
  json.dump(data, f, indent=4, sort_keys=True, ensure_ascii=False)

输出结果为:

{
    "age": 21,
    "contact": {
        "email": "tom@qq.com",
        "tel": "123456789"
    },
    "friends": [
        {
            "age": 20,
            "name": "Jerry"
        },
        {
            "age": 22,
            "name": "Bob"
        }
    ],
    "name": "Tom"
}
  1. load函数

load函数用于将JSON格式的字符串转换成Python数据类型。它接受一个参数:fp,表示读入的文件句柄。

示例代码如下:

import json

with open('data.json', 'r', encoding='utf-8') as f:
  data = json.load(f)
  print(data)

输出结果为:

{
    'name': 'Tom',
    'age': 21,
    'contact': {
        'email': 'tom@qq.com',
        'tel': '123456789'
    },
    'friends': [
        {
            'name': 'Jerry',
            'age': 20
        },
        {
            'name': 'Bob',
            'age': 22
        }
    ]
}
  1. loads函数

loads函数用于将JSON格式的字符串转换成Python数据类型。它接受一个参数:s,表示需要转换的JSON格式字符串。

示例代码如下:

import json

json_str = '''
{
    "name": "Tom",
    "age": 21,
    "contact": {
        "email": "tom@qq.com",
        "tel": "123456789"
    },
    "friends": [
        {
            "name": "Jerry",
            "age": 20
        },
        {
            "name": "Bob",
            "age": 22
        }
    ]
}
'''

data = json.loads(json_str)
print(data)

输出结果为:

{
    'name': 'Tom',
    'age': 21,
    'contact': {
        'email': 'tom@qq.com',
        'tel': '123456789'
    },
    'friends': [
        {
            'name': 'Jerry',
            'age': 20
        },
        {
            'name': 'Bob',
            'age': 22
        }
    ]
}
总结

本文介绍了Python中的JSON格式化,包括JSON格式化基础和使用json库对JSON数据进行格式化操作。在使用json库对JSON数据进行格式化操作时,我们可以使用dumps函数将Python数据类型转换成JSON格式的字符串,并进行格式化输出;如果需要将JSON数据写入文件,可以使用dump函数;如果需要将JSON格式的字符串转换成Python数据类型,可以使用loads函数;如果需要将JSON格式的字符串从文件中读入并转换成Python数据类型,可以使用load函数。通过本文的介绍和示例,相信您已经掌握了Python中的JSON格式化方法,希望本文对您有所帮助。