当前位置: 首页 > news >正文

json介绍、python数据和json数据的相互转换

目录

一 json介绍

json是什么?

用处

Json 和 XML 对比

各语言对Json的支持情况

Json规范详解

二 python数据和json数据的相互转换

dumps() : 转换成json

loads(): 转换成python数据

 总结


一 json介绍

json是什么?

实质上是一条字符串

是一种文本数据格式,
是一种文本规范
是一种字符串规范

用处

一般适合文本量不大,且需要记录树形结构的数据 或 需要灵活扩展数据

Json 和 XML 对比

Json文本
    更简洁易懂,对人更友好
    适合数据量不大,结构不复杂的场景 (如:后端接口的参数)
    比XML更小、更快、更易解析

XML 文本
    程序处理更方便,对机器更友好
    适合数据量大,结构复杂的场景(如:HTML是基于XML的)
 

各语言对Json的支持情况

1 Json实质上是一条字符串,程序中使用json,需要特定的方法转换为对象变量才能使用
2 Json是一种文本规范,各语言对Json的支持情况:
JavaScript:原生支持    √
Python:原生支持.import json   √
Java:原生不支持,需要引入Gson或FastJson
C++:原生不支持,引入Jsoncpp等库

Json规范详解

支持6种类型的值
1 字符串  如 "test String"    
    字符串中如果有双引号,需要使用\转义,如"test \" String"

2 数字  如 0.2 999 -1.1
    可以是整数、浮点数(小数)
    
3 布尔值 true false

4 null (空值)

5 对象 可嵌套数据,如 {"key1":"value1","key2":"value2"}
    包含在一对{}之内
    用,隔开多个键值对
    *键值对的 键 必须为字符串
    *键值对的 值 可以是6种值类型的任意一种,且无需统一类型
    {"key1":"value1","key2":true,"key3":{},"key4":23}

6 数组 可嵌套数据,如 ["value1","value2","value3"]
    包含在一对[]之内的
    单个数组内的多个值用,隔开
    数组内的值可以是Json支持的6种值的任意一种
    单个数组内的多个值无需统一类型

备注:
Json文本中多余的空格、换行不会有实质的影响,仅仅是为了方便阅读


二 python数据和json数据的相互转换

dumps() : 转换成json
import json
#准备列表
data=[{"姓名":"小明","年龄":"12"},{"姓名":"小红","年龄":"13"},{"姓名":"小李","年龄":"8"}]
#转换成json
# 有中文的时候加 ensure_ascii=False
json_str = json.dumps(data,ensure_ascii=False)
print(json_str)
print(type(json_str))
#准备字典
#转换成json
dic1={"水果":"西瓜","蔬菜":"胡萝卜","蛋白质":"牛肉"}
json_str2 = json.dumps(dic1,ensure_ascii=False)
print(json_str2)
print(type(json_str2))

 json实质上就是字符串str 

loads(): 转换成python数据
import json
#准备json数据
s1='[{"姓名":"小明","年龄":"12"},{"姓名":"小红","年龄":"13"},{"姓名":"小李","年龄":"8"}]'
#转换成列表
l1 = json.loads(s1)
print(l1)
print(type(l1))
#准备json数据
#转换成字典
s2='{"水果":"西瓜","蔬菜":"胡萝卜","蛋白质":"牛肉"}'
d1 = json.loads(s2)
print(d1)
print(type(d1))

 总结

相关文章:

  • GPIO概念
  • 分类预测 | Matlab实现GWO-LSSVM灰狼算法优化最小二乘支持向量机多特征分类预测
  • js加密之延伸requestAnimationFrame
  • 【Block总结】SAFMN,空间自适应调制与局部特征增强的协同设计|即插即用
  • 面试基础 ---深入解析JDK8类加载机制
  • Python核心技术,Django学习基础入门教程(附环境安装包)
  • iOS UICollectionViewCell 点击事件自动化埋点
  • 计算机毕业设计SpringBoot+Vue.js相亲网站(源码+文档+PPT+讲解)
  • Unity中动态切换光照贴图LightProbe的方法
  • C++实现3D(EasyX)详细教程
  • DeepSeek蒸馏TinyLSTM实操指南
  • deepseek使用记录18——文化基因之文化融合
  • 数据结构(初阶)(六)----队列
  • Linux NAT和代理服务器
  • 【开源免费】基于SpringBoot+Vue.JS周边游平台系统(JAVA毕业设计)
  • 0x05 部门功能开发日志技术
  • 图漾PercipioIPTool软件使用
  • python基于后门的神经网络模型水印通用方法
  • AndroidStudio下载旧版本方法
  • miqiu的分布式锁(四):MySQL悲观锁解析
  • 全国多家健身房女性月卡延长,补足因月经期耽误的健身时间
  • 六省会共建交通枢纽集群,中部离经济“第五极”有多远?
  • 网易有道一季度净利润同比增长247%:有能力在今年实现更强劲的利润增长
  • 中国首艘海洋级智能科考船“同济”号试航成功,可搭载水下遥控机器人
  • 大陆非遗项目打铁花、英歌舞将在台演出
  • 媒体评欧阳娜娜遭民进党当局威胁:艺人表达国家认同是民族大义