Python的json解析库

使用过JavaScript就知道JavaScript处理JSON非常方便,因为JSON字符串和JavaScript对象几乎是完全对应的,只需要一个函数就可以互相转换。实际上Python的字典和列表结构也是能和JSON对应,Python内置了JSON的解析库,它使用起来和JavaScript一样方便,下面我们介绍Python的json模块。

解析JSON字符串

例子JSON字符串如下。

{
  "users": [
    {
      "name": "Tom",
      "age": "11"
    },
    {
      "name": "Jerry",
      "age": "12"
    },
    {
      "name": "Cate",
      "age": "10"
    }
  ]
}

下面代码解析JSON字符串并打印在控制台上。

import json

fp = open("test.json", "r")
obj = json.load(fp)
print(obj)
fp.close()

运行结果如下。

{'users': [{'name': 'Tom', 'age': '11'}, {'name': 'Jerry', 'age': '12'}, {'name': 'Cate', 'age': '10'}]}

代码中,json.load()函数传入一个文件描述符,即可把JSON字符串解析为“字典-列表”结构。

  • json.load(fp) 传入一个文件描述符,解析文件中的JSON字符串
  • json.loads(s) 传入一个JSON字符串并解析

这两个函数中还有许多实用的关键字参数,这里就不逐一解释了。具体请参考Python3的官方文档。

序列化JSON对象

Python中我们需要准备一个“字典-列表”结构,json模块能够识别这种结构并把它序列化为JSON字符串。

import json

obj = {
    "users": [
        {
            "name": "Tom",
            "age": "11"
        },
        {
            "name": "Jerry",
            "age": "12"
        },
        {
            "name": "Cate",
            "age": "10"
        }
    ]
}
json_str = json.dumps(obj)

print(type(json_str))
print(json_str)

输出结果如下。

<class 'str'>
{"users": [{"name": "Tom", "age": "11"}, {"name": "Jerry", "age": "12"}, {"name": "Cate", "age": "10"}]}
  • json.dump(obj, fp) 第一个参数是字典类型,第二个参数是文件描述符,可以直接将JSON字符串写入文件,无返回值
  • json.dumps(obj) 传入字典返回JSON字符串

还有一些关键字参数可以控制JSON输出的格式,这里就不尝试了,具体请参考文档。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。