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

发布于:2025-03-05 ⋅ 阅读:(17) ⋅ 点赞:(0)

目录

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

 总结