JSON对象是javascript object即javascript中的对象,是一种通用的格式,格式严格,不支持备注。
JSON文本和JSON对象的区别:
- JSON文本是符合JSON格式的文本,实际上是一个字符串
- JSON对象是内存中一个对象,拥有属性和方法,可以通过对象获取其中的参数信息
Python中我们一般提到JSON对象指的是字典
Python的字典的格式和JSON格式,稍有不同:
- 字典中的引号支持单引号和双引号,JSON格式只支持双引号
- 字典中的True/False首字母大写,JSON格式为true/false
- 字典中的空值为None, JSON格式为null
json 是数据存储和交换文本信息的语法
javaScript对象表示法
用于数据传递
json中的数据格式 python中的数据
数字 整型 浮点数
字符串 字符串
布尔值 true false True False
数组 列表。元祖
对象 字典
null None
常见的json数据格式
{
code:200,
values:[
{"name":'lal','age':20}]
}
{} josn数据对应json对象
[] josn数组
代码如下
import json age = 10 #dumps把数据转化为json语法中的数值数据 json_data = json.dumps(age) print(json_data) name = '橙子' json_dta =json.dumps(name) print(json_data) person ={"chinese":99} json_data =json.dumps(person) print(json_data) #在python中可自定义类型 自定义的类型 在json中没有对应的数据格式 #需要制定编码规则 通过编码规则 将自定义类型的数据转换为json可识别的数据 class Person(): def __init__(self,name): self.name = name def __str__(self): return f"Person(name={self.name})" #__repr__通过容器调用对象调用__repr__ #__str__当打印对象时输出设定的格式信息 __repr__ =__str__ p = Person("橙子") print(p) print(type(p))#<class '__main__.Person'> #在json中无对应数据 #存储Person类型的数据-需获取json可识别数据格式 #方式1 #对象__dict__获取对象的特征信息以字典形式存储 json_data = json.dumps(p.__dict__) print(json_data)#{"name": "\u6a59\u5b50"} #本质上存储的是字典 #loads解析为json数据 python_data =json.loads(json_data) print(python_data) #对应对象为Person对象 需要根据数据信息创建对象 p = Person(python_data["name"]) print(p,type(p))#Person(name=橙子) <class '__main__.Person'> #方法二存储时设置编码规则 存的是指定的编码规则数据 #获取的时候要对应有一个解码规则 在根据数据解析成对象 #对以上操作封装 #PersonEncoder编码 class PersonEncoder(json.JSONEncoder): #重写方法 #这个方法在dumps时 内部自动调用 #子类重写父类的方法 子类对党调用时 只能调用重写 因为会吧父类方法覆盖 def default(self, o): #把规则写出来 #o 表示要进行json转换的对象 return o.__dict__ P =Person('橙子2') #CLS制定编码规则 #对象__dict__获取对象的特征信息以字典形式存储 json_data =json.dumps(P,cls=PersonEncoder) print(json_data)#{"name": "\u6a59\u5b502"} #解析JSONDecoder class PersonDecoder(json.JSONDecoder): def __init__(self): #指定解码规则 #object_hook对象挂钩-对象解析-接受的是一个函数 super().__init__(object_hook=self.to_python_obj) def to_python_obj(self,d): #d接受的是字典,当前制定的转化为json对象的数据格式 return Person(d['name']) #解析操作 python_data =json.loads(json_data,cls=PersonDecoder) print(python_data)#Person(name=橙子2)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】