Python实现字典 dict 和 json 相互转化
[] 与 {} [] 是 Array(也就是数组) {} 是Ojbect(也就是对象) [] Array 的key 是 int. {} 的key 是 string 例如 var dot1=["a"]; 就是一个数组 var dot2={"a"} 就是一个对象 数组和对象转换非常简单, dot1把[] 替换为{} 就是对象, dot2把[]替换为{}就是素组。这在jquery的JSON处理中,非常常用。 当dot1为素组后,自然支持数组的常用方法,例如 dot1.push(), dot1.shift(),dot1.pop() 等方法 dot2为对象可以使用JS对象的各种方法。 var dot2={a:"a",b:"b",c:"c"}; 不管你看到dot2定义多么复杂,只要看到他是以{}开始和结尾就是理解为对象。 var dot1=["a","b","c"]; 不管dot1多简单,只要是[]包含,就是数组 当然,一个数组是可以包含多个对象的,所以 var dot1=[{a:"a"},{b:"b"}]; dot1就包含了2个对象 同样,dot1={[{a:"a"},{b:"b"}]} 就是一个对象,只是这个对象包含了一个数组。 var a= Array(); a[a.length] = '3'; a[a.length] = '4'; a[a.length] = '5'; a toJSON 后 ='["3", "4", "5"]' var a = new Object(); a['test1'] = '3'; a['test2'] = '4'; a['test3'] = '5'; a toJSON 后 = '{"test1":"3", "test2":"4", "test3":"5"}'
1、简单的格式嵌套 { "tr_info": { " description": "交易信息", "type": " string", "tr_type": { " description": "交易类型", "type": " string" } } } 2、数组对象嵌套的格式 { "tr_info": { " description": "交易信息", "type": " string", "tr_type": [{ " description": "交易类型1", "type": " string" }, { " description": "交易类型2", "type": " string" }] } }
1、简单的格式嵌套 { "tr_info": { " description": "交易信息", "type": " string", "tr_type": { " description": "交易类型", "type": " string" } } } 2、数组对象嵌套的格式 { "tr_info": { " description": "交易信息", "type": " string", "tr_type": [{ " description": "交易类型1", "type": " string" }, { " description": "交易类型2", "type": " string" }] } }
字典和json字符串一样都是包在{}中间
字典 字典是另一种可变容器模型,且可存储任意类型对象。 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示: d = {key1 : value1, key2 : value2 } 一个简单的字典实例: dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} 1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住。 2)键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行。 json 通过抓包以 JSON Text形式查看的JSON数据实例如下: { "studentInfo": { "id":123456, "stu_name":"Dorra" } } json:是一种数据格式,是纯字符串。可以被解析成Python的dict或者其他形式。 dict:是一个完整的数据结构,是对Hash Table这一数据结构的一种实现,是一套从存储到提取都封装好了的方案。 区别: json的key只能是字符串,python的dict可以是任何可hash对象(hashtable type)。 json的key可以是有序、重复的;dict的key不可以重复。 json的value只能是字符串、浮点数、布尔值或者null,或者它们构成的数组或者对象。 json任意key存在默认值undefined,dict默认没有默认值。 json访问方式可以是[],也可以是.,遍历方式分in、of;dict的value仅可以下标访问。 json的字符串强制双引号,dict字符串可以单引号、双引号。 dict可以嵌套tuple,json里只有数组。 json:true、false、null。 python:True、False、None。 json中文必须是unicode编码,如"u6211"。 json的类型是字符串,字典的类型是字典。
字典 dict 和 json 如何相互转化, 将字典数据转 json 格式写入文件,然后从文件中读取出来还原为字典。
- 文件读写
- 基础语法
- 多级字典
- json
使用的模块
import platform import json
输入多级字典数据
input_dict = {
"students": [
{"name": "John", "age": "15"},
{"name": "Anna", "age": "16"},
{"name": "Peter", "age": "16"}
],
"teachers": [
{"name": "Jack", "age": "30"},
{"name": "Jessy", "age": "33"}
]}
print("输入数据: ", input_dict)
字典 dict 转 json, 写入文件
def dict_to_json():
with open("py013.json", "w") as f:
f.write(json.dumps(input_dict, indent=4))
json 转 字典 dict , 从文件读取
def json_to_dict():
with open("py013.json") as f:
output_dict = json.loads(f.read())
全部代码
import platform
import json
print("孟曰:如欲平治天下,当今之世,舍我其谁也?")
print("字典 dict 和 json 如何相互转化 ")
input_dict = {
"students": [
{"name": "John", "age": "15"},
{"name": "Anna", "age": "16"},
{"name": "Peter", "age": "16"}
],
"teachers": [
{"name": "Jack", "age": "30"},
{"name": "Jessy", "age": "33"}
]}
print("输入数据: ", input_dict)
def dict_to_json():
with open("py013.json", "w") as f:
f.write(json.dumps(input_dict, indent=4))
def json_to_dict():
with open("py013.json") as f:
output_dict = json.loads(f.read())
print("json 转字典的结果: ", output_dict)
dict_to_json()
json_to_dict()
print("Python 版本", platform.python_version())
效果展示

Json 格式数据
{
"students": [
{
"name": "John",
"age": "15"
},
{
"name": "Anna",
"age": "16"
},
{
"name": "Peter",
"age": "16"
}
],
"teachers": [
{
"name": "Jack",
"age": "30"
},
{
"name": "Jessy",
"age": "33"
}
]
}
import json dict_test = {"name":"方鹏程","age":12,"birth":"1991-08-27"} str1 = json.dumps(dict_test,indent=1) print(str1,type(str1)) # with open("a.txt","a") as f: # f.write(dict_test) dict1= json.loads(str1) print(dict1,type(dict1)) # 创建str实例,在Python中,你可以直接调用类(包括内建类型)来创建一个新的实例。 my_string = "Hello, World!" # 使用字面量 my_string_instance = str("Hello, World!") # 使用类名 # 创建dict实例 my_dict = {'name': 'Alice', 'age': 30} # 使用字面量 my_dict_instance = dict(name='Alice', age=30) # 正确的方式 # 使用new创建str实例 my_string_new = str.__new__(str, "Hello, World!") print(my_string_new) # 输出:Hello, World! str = "This is a string" # 错误:这里将str赋值为一个字符串,覆盖了内置的str类 my_string_instance = str("Hello, World!") # 这将引发错误,因为str现在是一个字符串,不是类.永远不要将内置类型(如 str、dict、list 等)的名称用作变量名
海纳百川 ,有容乃大


浙公网安备 33010602011771号