json标准库大总结 打卡笔记


活动地址:CSDN21天学习挑战赛

基础

JSON(全名:JavaScript Object Notation 对象表示法)是一种轻量级的文本数据交换格式,和python中的字典格式很像。
JSON是独立于语言存在的,比XML更小,是爬虫中经常遇到的接口数据格式

格式

语法格式:{key1:value1, key2:value2,} 键值对形式(用冒号分开),对间用逗号连接

  1. json的键值对的键部分,必须用双引号"包裹,单引号都不行(所以如果在键中出现了关键字,也被字符化了),而js中对象没有强制要求(所以在键中不允许出现关键字)。
  2. json的键值对的部分,不允许出现函数function,undefined,NaN,但是可以有null
  3. json数据结束后,不允许出现没有意义的逗号

json模块

带s和字符相关,不带s和文件相关
json.load:使用json字符串生成python对象
json.dump:python对象格式化为json字符串
json格式和Python格式的区别在于:python格式打印输出是单引号,类型为dict。而json格式打印输出是双引号,类型为:str
使用参数能让JSON字串格式化输出

>>> print(json.dumps(person, sort_keys=True, indent=4, separators=('!', '-')))
{
    "age"-30!
    "isonly"-true!
    "name"-"\u5c0f\u660e"!
    "tel"-[
        "888888"!
        "1351111111"
    ]
}

参数:
sort_keys:是否排序
indent:定义缩进距离
separators:是一个元组,定义分隔符的类型
skipkeys:是否允许JSON字串编码字典对象时,字典的key不是字符串类型(默认是不允许)

dump和dumps区别

dump将python数据类型转换并保存到son格式的文件内。

import json

person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}

json.dump(person, open('data.json', 'w'))

dumps要写入,就得额外操作

import json

person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}

jsonStr = json.dumps(person)

with open('test.json', 'w', encoding='utf-8') as f:  # 打开文件
    f.write(jsonStr)  # 在文件里写入转成的json串

json.loads:将json格式的字符串转换为python的类型。
json.load:从json格式的文件中读取数据并转换为python的类型。

import json

python_obj = json.load(open('data.json','r'))
print(python_obj)
print(type(python_obj))
print(python_obj.keys())
print(python_obj.values())
print(python_obj["name"])

XML文件和JSON互转

安装第三方模块pip install xmltodict

import json
import xmltodict


def xml_to_json(xml_str):
    """parse是的xml解析器,参数需要

    :param xml_str: xml字符串
    :return: json字符串
    """
    xml_parse = xmltodict.parse(xml_str)
    # json库dumps()是将dict转化成json格式,loads()是将json转化成dict格式。
    # dumps()方法的ident=1,格式化json
    json_str = json.dumps(xml_parse, indent=1)
    return json_str


XML_PATH = './1.xml'  # xml文件的路径
with open(XML_PATH, 'r') as f:
    xmlfile = f.read()
    with open(XML_PATH[:-3] + 'json', 'w') as newfile:
        newfile.write(xml_to_json(xmlfile))


反之

import xmltodict
import json


def json_to_xml(python_dict):
    """xmltodict库的unparse()json转xml

    :param python_dict: python的字典对象
    :return: xml字符串
    """
    xml_str = xmltodict.unparse(python_dict)
    return xml_str


JSON_PATH = './test.json'  # json文件的路径
with open(JSON_PATH, 'r') as f:
    jsonfile = f.read()
    python_dict = json.loads(jsonfile)  # 将json字符串转换为python字典对象
    with open(JSON_PATH[:-4] + 'xml', 'w') as newfile:
        newfile.write(json_to_xml(python_dict))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值