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

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))

 总结


http://www.kler.cn/a/572010.html

相关文章:

  • 华为 VRP 系统简介配置SSH,TELNET远程登录
  • Kubernetes Pod 管理及优化
  • 利用出书策略结合定制开发开源AI智能名片S2B2C商城小程序获取私域流量的探索
  • vue实例
  • 通配符匹配在Redis中的实现
  • AI绘画软件Stable Diffusion详解教程(6):文生图、提示词细说与绘图案例
  • [Web 安全] PHP 反序列化漏洞 —— PHP 魔术方法
  • CSS Overflow 属性详解
  • 千里科技亮相吉利AI智能科技发布会,共启“AI+车”新纪元
  • Asp.Net Core WebAPI开发教程(入门)
  • 机器人训练环境isaac gym以及legged_gym项目的配置问题
  • JAVA实战开源项目:租房管理系统(Vue+SpringBoot) 附源码
  • 17 款电脑压缩工具详解及下载指南(2025 年最新版)
  • ARM CM3核 压栈流程
  • 基于SpringBoot的“扶贫助农系统”的设计与实现(源码+数据库+文档+PPT)
  • 线反转法实现矩形键盘按键识别
  • 搭建一个简单的node服务,模拟后端接口
  • 阿里通义万相2.1模型在亚马逊云科技ECS容器中的私有化部署
  • Dockershrink 开源的 AI 助手(程序包),可减小应用程序的 Docker 镜像的大小
  • STM32F103C8T6 基于 TB6612 驱动 12V 编码电机的教程