Python-json基础-学习日志-优快云21天学习挑战赛(四)-更多学习请期待下期


活动地址:优快云21天学习挑战赛

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…

 

Python--json!

        温馨提示:请学习时仔细观察各个实例的区别哦!

一、json基础概念及优势

1.json概念(引用菜鸟教程解释)

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。

2.json功能优势

  • 接口语言,经常用到。
  • 轻量级文本数据交换格式 。 
  • 独立语言。    
  • 具有自我描述性,更易理解。    
  • 比xml更小更快更易解析。

3.长什么样:

        语法格式:{"键1":"值1","键2":"值2","键3":"值3"} 

{
   "employees":[
       {"name":"LinLin1","Lname":"CWO1"},
       {"name":"LinLin2","Lname":"CWO2"},
       {"name":"LinLin3","Lname":"CWO3"}
       ]
}

        特征:

        1.打印出来时,键和值的引用都带着双引号"",而字典打印出来时,键值都是单引号''。

        2.数据类型:字典的数据类型是'dict',json的数据类型是'str'。

二、json数据类型转换 

        python与json的数据类型转换:

#            load          字典,列表,或者其他类型
# json字符串 =======>python对象
#            <=======
#             dump
# 核心:生成字典和列表
# 数据类型转换
#                python ===> json
# +------------------------------------+------------+
# | Python                             | json       |
# +------------------------------------+------------+
# | dict                               | object     |
# | list ,tuple                        | array      |
# | str                                | string     |
# | int,float,int-& float-derived Enums| number     |
# | True                               | true       |
# | False                              | false      |
# | None                               | null       |
# +------------------------------------+------------+
#
#                 json   ===>  python                  
# json转Python时,其它数据转换直接倒置上表即可,但number上却略微有点差别:
# +--------------+-------+
# | json         | python|
# +--------------+-------+
# | number int   |   int |
# | number real  | float |
# +--------------+-------+

三、json函数(四个常用)

        1.与json相关的四个函数简介如下:

# json.load(fp)            |  读取文件中json形式的字符串元素转化为Python类型 
# json.loads(s)            |  将已编码的 JSON 字符串解码为 Python 对象        
# json.dump(obj,fp)        |  将Python内置类型序列化为json对象后写入文件    
# json.dumps(obj)          |  将 Python 对象编码成 JSON 字符串             

# 字典和json的区别在于json打印出来时是双引号,字典是单引号。

        2.函数实践

                使用前,先将json导入Python,再创建一个字典用于下面的实验。

import json
bdname={"word":"write","name":"xiaolin","school":"szschool","age":24,"tel":["21123456781","18138162444"],"sionly":True}

                a. json.dumps

                        1) 语法格式及小实验

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)

# 将 Python 对象编码成 JSON 字符串
jsonstring = json.dumps(bdname) # 将Python字典类型转换为json类型
print(bdname)          # 字典的输出
print(type(bdname))    # 字典的数据类型鉴定
print(jsonstring)      # json的输出
print(type(jsonstring))# json的数据类型检测
# 两者输出上的微小差别上面已经讲了,字典单引号,json双引号

输出:
>>> {'word': 'write', 'name': 'xiaolin', 'school': 'szschool', 'age': 24, 'tel': ['21123456781', '18138162444'], 'sionly': True}
>>> <class 'dict'>
>>> {"word": "write", "name": "xiaolin", "school": "szschool", "age": 24, "tel": ["21123456781", "18138162444"], "sionly": true}
>>> <class 'str'>

                        2) 相关参数使用:

# 相关的三个参数及实验如下:

# indent:格式化输出,通过观察,为控制缩进的东西。
jsonstring = json.dumps(bdname,indent=10)
print(jsonstring)

# 下面是输出:

{
          "word": "write",
          "name": "xiaolin",
          "school": "szschool",
          "age": 24,
          "tel": [
                    "21123456781",
                    "18138162444"
          ],
          "sionly": true
}



# +-------------------------------------------------+
# sort_keys=True:将键进行排序!
jsonstring = json.dumps(bdname,indent=10,sort_keys=True)
print(jsonstring)

# 下面是输出:

{
          "age": 24,
          "name": "xiaolin",
          "school": "szschool",
          "sionly": true,
          "tel": [
                    "21123456781",
                    "18138162444"
          ],
          "word": "write"
}




# +-------------------------------------------------+

# separators定义分隔符的类型
jsonstring = json.dumps(bdname,separators=('#','@@@'),indent="10")
print(jsonstring)

# 下面是输出:
{
10"word"@@@"write"#
10"name"@@@"xiaolin"#
10"school"@@@"szschool"#
10"age"@@@24#
10"tel"@@@[
1010"21123456781"#
1010"18138162444"
10]#
10"sionly"@@@true
}

                 b.  json.loads

# 语法格式如下
# loads(s, *, cls=None, object_hook=None, parse_float=None,parse_int=None,parse_constant=None, object_pairs_hook=None, **kw)

# 将json类型转换为Python类型
python01 = json.loads(jsonstring)
print(python01)
print(type(python01))

输出:
>>> {'word': 'write', 'name': 'xiaolin', 'school': 'szschool', 'age': 24, 'tel': ['21123456781', '18138162444'], 'sionly': True}
>>> <class 'dict'>

                 c.  json.dump

# 语法格式
# dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True,allow_nan=True, cls=None, indent=None, separators=None,default=None, sort_keys=False, **kw)


# 打开json文件并执行写入操作
with open(r"index.json","w+",encoding="utf-8") as wo:
    json.dump(bdname,wo) # 将字典写入json,写入后json内部显示为json格式

# index.json文件内容展示:
{"name": "xiaolin", "school": "szschool", "age": 24, "tel": ["21123456781", "18138162444"], "sionly": true}

                d.  json.load 

#语法格式
# load(fp, *, cls=None, object_hook=None, parse_float=None,parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

#load读取json文件内容,将json读取到Python,类型转为字典
# 补充json.json文件内容如下:
# {
#   "employees":[
#       {"name":"LinLin1","Lname":"CWO1"},
#       {"name":"LinLin2","Lname":"CWO2"},
#       {"name":"LinLin3","Lname":"CWO3"}
#   ],
#     "student":
#         [
#             {"name": "小明", "age": 11},
#             {"name": "小红","age": 10}
#         ],
#     "classroom": {"class1": "room1", "class2": "room2"}
# }


# 打开json文件,执行读取操作
with open("json.json","r",encoding="utf-8") as wo:
    x=json.load(wo)
    print(x)
    print(type(x))
# 访问刚读取的字典
w=x['employees']
for i in w:
    print(i)
    print(i['name'])
    print(i['Lname'])
print(x["student"])

输出:
>>> {'employees': [{'name': 'LinLin1', 'Lname': 'CWO1'}, {'name': 'LinLin2', 'Lname': 'CWO2'}, {'name': 'LinLin3', 'Lname': 'CWO3'}], 'student': [{'name': '小明', 'age': 11}, {'name': '小红', 'age': 10}], 'classroom': {'class1': 'room1', 'class2': 'room2'}}
>>> <class 'dict'>
>>> {'name': 'LinLin1', 'Lname': 'CWO1'}
>>> LinLin1
>>> CWO1
>>> {'name': 'LinLin2', 'Lname': 'CWO2'}
>>> LinLin2
>>> CWO2
>>> {'name': 'LinLin3', 'Lname': 'CWO3'}
>>> LinLin3
>>> CWO3
>>> [{'name': '小明', 'age': 11}, {'name': '小红', 'age': 10}]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

矢量克罗斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值