Python处理JSON(可编辑修改word版)

合集下载

python将json格式的数据转换成文本格式的数据或sql文件

python将json格式的数据转换成文本格式的数据或sql文件

python将json格式的数据转换成⽂本格式的数据或sql⽂件python如何将json格式的数据快速的转化成指定格式的数据呢?或者转换成sql⽂件?下⾯的例⼦是将json格式的数据准换成以#_#分割的⽂本数据,也可⽤于⽣成sql⽂件。

[root@bogon tutorial]# vi json2txt.py#-*- coding: UTF-8 -*-import jsondata = []with open('./tencent_test.json') as f:for line in f:data.append(json.loads(line))#print json.dumps(data, ensure_ascii=False)import codecsfile_object = codecs.open('tencent.txt', 'w' ,"utf-8")str = "\r\n"splitstr = "#_#"for item in data:#print json.dumps(item)#str = str + "insert into tencent(name,catalog,workLocation,recruitNumber,detailLink,publishTime) values "#str = str + "'%s','%s','%s','%s','%s'\r\n" % (item['parentTitle'],item['parentLink'],item['author'],item['link'],item['title'])#print json.loads(item['author']) + "\r\n"str = "%s#_#%s#_#%s#_#%s#_#%s\r\n" % (item['parentTitle'],item['parentLink'],item['author'],item['link'],item['title'].strip())file_object.write(str)#import codecs#file_object = codecs.open('tencent.txt', 'w' ,"utf-8")#file_object.write(str)file_object.close()print "success"注:如果数据量过⼤不宜全部放在str⾥⼀次性写⼊⽂件。

python处理json数据的基本方法

python处理json数据的基本方法

python处理json数据的基本方法在Python中处理JSON数据有多种方法,可以使用标准库中的`json`模块,也可以使用第三方库如`json5`、`pyyaml`等。

下面是一些常用的JSON数据处理方法:1.解析JSON数据Python的`json`模块提供了`loads(`函数用于将JSON字符串解析为Python对象(通常是字典或列表),`load(`函数用于从文件中读取JSON 数据并解析。

```pythonimport json#解析JSON字符串json_str = '{"name": "John", "age": 30, "city": "New York"}' data = json.loads(json_str)print(data)#解析JSON文件with open('data.json') as file:data = json.load(file)print(data)```2.编码为JSON数据与解析相反,`json`模块也提供了`dumps(`和`dump(`函数用于将Python对象编码为JSON字符串或写入文件。

```pythonimport json#编码为JSON字符串data = {"name": "John", "age": 30, "city": "New York"}json_str = json.dumps(data)print(json_str)#编码为JSON文件with open('data.json', 'w') as file:json.dump(data, file)```3.访问和修改JSON对象解析JSON后,可以像操作字典一样访问和修改JSON对象中的值。

python处理json(json转字典)

python处理json(json转字典)

python处理json(json转字典)python处理json(json转字典)这边我们将json转dict,后⾯的数组转变成了array,下⾯附上代码:#!usr/bin/env python#-*- coding:utf-8 -*-import osimport jsonimport string# 读⼊jsonwith open('inx-hashtagfinal.json', 'r', encoding='UTF-8') as f:aa = json.load(f)dic=aai=1# 转了之后的字典⼤⼩number=len(dic)dicnew={}for key in dic:i=i+1if i%10==0:x=i/numberx=x*100x=round(x,2)print("Have done "+str(x)+"%")value=dic[key]# value是⼀个数组["hello","world"]lengtharray=len(value)if lengtharray<=0:continueelse:# 遍历数组for arrayptr in range(0,len(value)):valuea=value[arrayptr]# print(valuea)# valuea就是"hello"a=0# a是list⾥元素的位指针,⽤来遍历"hello"中的字母的length=len(valuea)# 这边我是为了删除元素⾥的空格,别的⽤途可以直接替换 ----while True:if a>length-1:breakif valuea[a]==' ':valuea=valuea[:a]+valuea[a+1:]a=a-1length=length-1if length<0:breaka=a+1# 这边我是为了删除元素⾥的空格,别的⽤途可以直接替换 ----# 这边需要将数组中的元素更新value[arrayptr]=valuea# 更新字典中的数组dic[key]=valuejs=json.dumps(dic)file=open(r"F:/2019Hashtag/trainhashtag.json",'w')file.write(js)file.closeprint("finished")。

python_json的用法_概述及解释说明

python_json的用法_概述及解释说明

python json的用法概述及解释说明1. 引言1.1 概述本文将介绍Python中使用JSON的用法,它是一种轻量级的数据交换格式,被广泛应用于Web开发、服务器通信等领域。

通过使用Python的json模块,我们可以方便地解析和操作JSON数据。

本文将详细解释如何使用Python进行JSON数据的解析、创建和修改,并举例说明其在实际应用中的场景。

1.2 文章结构文章分为四个部分:引言、Python JSON的用法、解释说明和结论。

在引言部分,我们将简要概述文章内容及结构,以提供读者对全文的整体把握。

1.3 目的本文旨在向读者介绍Python中JSON的基本概念和常见用法,并教授如何使用相关函数和方法来处理JSON数据。

通过学习本文,读者将能够理解JSON在实际项目中的作用和价值,并能够灵活运用Python处理JSON数据。

此外,我们还会对比JSON与其他数据格式之间的优劣势,并展望其未来发展方向。

请根据自己理解撰写文章“1. 引言”部分所需内容。

2. Python JSON的用法:2.1 JSON简介:JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,它以易于阅读和编写的方式来表示结构化数据。

JSON采用键值对的形式来组织数据,并使用大括号({})将多个键值对包含在内。

在Python中,可以使用json模块来处理JSON数据。

2.2 JSON数据类型:JSON支持以下几种数据类型:- 字符串:用于存储文本信息。

- 数字:用于存储数值信息。

- 对象:用于存储复杂结构化数据,由多个键值对组成。

- 数组:用于存储多个值,类似于Python中的列表。

- 布尔值:用于表示真或假。

- 空值:表示空缺或不存在的值。

在Python中,可通过json模块将这些JSON数据类型与相应的Python数据类型相互转换。

2.3 Python操作JSON的方法和函数:Python提供了一些方法和函数来操作JSON数据。

Python遍历文件夹处理json文件的方法

Python遍历文件夹处理json文件的方法

Python遍历⽂件夹处理json⽂件的⽅法有两种做法:os.walk()、pathlib库,个⼈感觉pathlib库的path.glob⽤来匹配⽂件⽐较简单。

下⾯是第⼆种做法的实例(第⼀种做法百度有很多⽂章):from pathlib import Pathimport jsonanalysis_root_dir = "D:\\analysis_data\json_file"store_result="D:\\analysis_data\\analysis_result\\dependency.csv"def parse_dir(root_dir):path = Path(root_dir)all_json_file = list(path.glob('**/*.json'))parse_result = []for json_file in all_json_file:# 获取所在⽬录的名称service_name = json_file.parent.stemwith json_file.open() as f:json_result = json.load(f)json_result["service_name"] = service_nameparse_result.append(json_result)return parse_resultdef write_result_in_file(write_path , write_content):with open(write_path,'w') as f:f.writelines("service_name,action,method,url\n")for dict_content in write_content:url = dict_content['url']method = dict_content['method']action = dict_content['action']service_name = dict_content['service_name']f.writelines(service_name + ","+ action+","+method + ","+ url+"\n")def main():print("main begin...")parse_result = parse_dir(analysis_root_dir)print(parse_result)write_result_in_file(store_result,parse_result)print("main finished...")if __name__ == '__main__':main()运⾏结果main begin...[{'url': '/rest/webservice/v1/dosomthing', 'method': 'post', 'action': 'create', 'service_name': 'WebSubService'}, {'url': '/rest/webservice/v1/dosomthing', 'method': 'post', 'action': 'create', 'service_name': 'WebSubService01'}, {'url': '/rest/webservice/v1/dosomthing', 'meth main finished...⽬录结构json file内容{"url":"/rest/webservice/v1/dosomthing","method":"post","action":"create"}以上这篇Python遍历⽂件夹处理json⽂件的⽅法就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

python中json方法

python中json方法

python中json方法JSON是一种轻量级的数据交换格式,广泛应用于Web开发和数据传输中。

Python提供了丰富的JSON处理方法,使得开发者可以方便地处理和解析JSON数据。

本文将介绍Python中常用的JSON方法,包括JSON转换、解析和操作等方面的内容。

一、JSON转换1. json.dumps()方法:将Python对象转换为JSON格式的字符串。

该方法可以将包括基本数据类型、列表、字典等在内的Python对象转换为JSON格式的字符串。

2. json.dump()方法:将Python对象转换为JSON格式并写入文件。

该方法将Python对象转换为JSON格式的字符串,并将其写入指定的文件中。

二、JSON解析1. json.loads()方法:将JSON格式的字符串转换为Python对象。

该方法可以将JSON格式的字符串解析为对应的Python对象,如字典、列表等。

2. json.load()方法:从文件中读取JSON格式的数据并解析为Python对象。

该方法从指定的文件中读取JSON格式的数据,并将其解析为对应的Python对象。

三、JSON操作1. 获取JSON数据:可以使用Python中的索引或键值对的方式获取JSON数据。

例如,使用索引方式获取列表中的元素,使用键值对方式获取字典中的值。

2. 修改JSON数据:可以直接对Python对象进行修改,然后使用json.dumps()方法将修改后的Python对象转换为JSON格式的字符串。

3. 添加JSON数据:可以通过在Python对象中添加新的键值对来添加JSON数据,然后使用json.dumps()方法将添加后的Python 对象转换为JSON格式的字符串。

4. 删除JSON数据:可以使用Python中的del关键字或pop()方法来删除JSON数据。

四、JSON异常处理在处理JSON数据时,可能会遇到各种异常情况,如JSON格式错误、解析错误等。

python处理json文件的基本方法

python处理json文件的基本方法

python处理json文件的基本方法
Python是一种强大的编程语言,具备处理各种数据格式的能力,其中包括JSON文件。

JSON是一种轻量级的数据交换格式,它具有易于阅读和编写、易于解析和生成、支持多种编程语言等优点,因此被广泛应用于数据交互领域。

本文将介绍Python处理JSON文件的基本方法,包括如何读取JSON文件、如何解析JSON数据、如何生成JSON数据以及如何修改JSON数据等。

读取JSON文件
要读取JSON文件,可以使用Python内置的json模块。

具体步骤如下:
1.导入json模块:首先需要导入json模块,以便使用其中的函数和方法。

2.打开JSON文件:使用Python的open()函数打开JSON文件,并以'r'的方式读取文件。

3.读取JSON数据:使用json模块的load()函数读取JSON数据,这样就可以将JSON数据存储在Python的变量中了。

示例代码如下:
import json
with open('data.json', 'r') as f:
data = json.load(f)
解析JSON数据
读取JSON文件之后,需要对其中的数据进行解析,以便进一步处理。

要解析JSON数据,可以使用json模块中的loads()函数,它可以将JSON字符串转换为Python对象。

python之处理json字符串

python之处理json字符串

python之处理json字符串⼀、如何从⽂件中读取json字符串通过json模块可以处理json数据。

1.loads()⽅法loads(json_object)将json字符串转换成dict类型。

import json# fr=open("products.json",'r',encoding='utf-8')# content=fr.read()#json字符串,f.read()读取⽂件所有内容,返回str类型,f.readlines()⼀⾏⼀⾏读,返回⼀个list,每⾏为list元素# dict=json.loads(content)# print(dict)2.load()⽅法load(f)可以直接操作⽂件,也是将json字符串转换成dict类型f=open("products.json",'r',encoding='utf-8')# dict=json.load(f)# print(dict)⼆、如何将json数据写⼊⽂件1.dumps()dumps(dict)将dict类型转换成json类型fw=open('new.json','w',encoding='utf-8')stus={"hailong":{"age":27,"height":175},"lyh":{"age":28,"height":160}}str_content=json.dumps(stus,indent=4)#indent缩进fw.write(str_content)2.dump()⽅法dump(f)直接操作⽂件,将dict类型转换成json数据# fw=open("new.json",'w',encoding='utf-8')# stus={"hailong":{"age":27,"height":175},"lyh":{"age":28,"height":160},'wql':{"age":31,"height":172}}# json.dump(stus,fw,indent=5,ensure_ascii=False)三、如何从接⼝返回的响应数据json中获取字段值import jsonpathstus={"error_code": 0,"login_info": {"userId": 1,"sign": "d58e3582afa99040e27b92b13c8f2280","login_time": "20171207113501"}}res=jsonpath.jsonpath(stus,expr='$..sign'#返回的是⼀个listprint(res)。

pythonjson文件及json格式的数据处理

pythonjson文件及json格式的数据处理

pythonjson⽂件及json格式的数据处理json格式的数据处理(json格式的数据实际上就是json字符串)json.dumps()和json.loads()是json格式处理函数json.dumps()函数是将⼀个Python数据类型列表进⾏json格式的编码(可以这么理解,json.dumps()函数是将字典转化为字符串)json.loads()函数是将json格式数据转换为字典(可以这么理解,json.loads()函数是将字符串转化为字典)举例:import jsondata = {'name' : 'ACME','shares' : 100,'price' : 542.23}json_str = json.dumps(data)data1 = json.loads(json_str)print(json_str)print(type(json_str))print(data1)print(type(data1))运⾏结果:{"shares": 100, "name": "ACME", "price": 542.23}<class 'str'>{'name': 'ACME', 'shares': 100, 'price': 542.23}<class 'dict'>json⽂件处理函数import jsonf_name = 'msginp_10_11.json'msg_inp = input('请输⼊您喜欢的数字:')with open(f_name,'w') as fn:json.dump(msg_inp,fn) #实际作⽤等同于如下两⾏# json_str = json.dumps(msg_inp) #将字符串转换为json格式 # fn.write(json_str) #将json格式的字符串写⼊⽂件#read json数据with open(f_name) as fn1:c = json.load(fn1)print('I know your favorite number! It\'s '+ c)。

利用python修改json文件的value方法

利用python修改json文件的value方法
即把example.json中key值为a.b.c对应的value值修改为999。
以上这篇利用python修改json文件的value方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多 支持。
def rewrite_json_file(filepath,json_data): with open(filepath, 'w') as f: json.dump(json_data,f) f.close()
if __name__ == '__main__':
key = sys.argv[1] value = int(sys.argv[2]) json_path = sys.argv[3]
一直在思索实现一个透明的窗体然后可以基于这个窗体可以开发出各种好玩的应用如桌面运动的小人运动的小球截图录制gif等等今天无意间居然让我把其中一个最核心的技术难关突破了我非常高兴也借这个机会跟大家分享一下
利用 python修改 json文件的 value方法
做工程时遇到需要监听json文件,根据json文件中的key-value值作出相应处理的情形。为此写了修改json文件的python脚本供 工程后续调用。
m_json_data = get_new_json(json_path,key,value) rewrite_json_file(json_path,m_json_data)
运行范例:
python json_value_modify.py a.b.c 999 /home/cabin/exami=0 a = json_data while i < key_length : if i+1 == key_length :

python对json的操作总结

python对json的操作总结

python对json的操作总结 Python2.6 以上版本⽀持Json的编码和解码,⽀持python的⼤部分内置类型与Json进⾏转换。

最简单的例⼦如下所⽰:>>> import json>>> data = {"spam" : "foo", "parrot" : 42}>>> in_json = json.dumps(data) # Encode the data>>> in_json'{"parrot": 42, "spam": "foo"}'>>> json.loads(in_json) # Decode into a Python object{"spam" : "foo", "parrot" : 42} Encode过程,是把python对象转换成json对象的⼀个过程,常⽤的两个函数是dumps和dump函数。

两个函数的唯⼀区别就是dump把python对象转换成json对象⽣成⼀个fp的⽂件流,⽽dumps则是⽣成了⼀个字符串: 其他参数的使⽤都是⼀样的。

以下是部分学习的代码⽚段:dic1 = {'type':'dic1','username':'loleina','age':16}json_dic1 = json.dumps(dic1)print json_dic1json_dic2 = json.dumps(dic1,sort_keys=True,indent =4,separators=(',', ': '),encoding="gbk",ensure_ascii=True )print json_dic2运⾏结果如下所⽰:如果把实例中的key'username'的value换成中⽂的“测试”,则⽤第⼀次不加参数转换则会报错,但是⽤第⼆个加参数的就能正常运⾏。

python处理json数据的基本方法

python处理json数据的基本方法

python处理json数据的基本方法Python是一种非常适合处理JSON数据的语言。

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,通常用于Web应用程序和API之间的数据传输。

Python提供了一些内置的模块和函数,使得处理JSON数据变得容易和方便。

以下是Python处理JSON数据的基本方法:1. 将JSON数据解析为Python对象Python中的json模块提供了loads()函数,可以将JSON数据解析为Python对象。

例如:import json# JSON数据字符串data = '{'name': 'John Smith', 'age': 42, 'isStudent': true}'# 解析JSON数据为Python对象obj = json.loads(data)print(obj) # {'name': 'John Smith', 'age': 42, 'isStudent': True}2. 将Python对象转换为JSON数据Python中的json模块还提供了dumps()函数,可以将Python对象转换为JSON数据。

例如:import json# Python对象obj = {'name': 'John Smith', 'age': 42, 'isStudent': True} # 转换为JSON数据data = json.dumps(obj)print(data) # '{'name': 'John Smith', 'age': 42,'isStudent': true}'3. 读取JSON文件Python中的json模块还提供了load()函数,可以读取JSON文件并解析为Python对象。

python的json方法

python的json方法

Python 的 JSON 方法JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写。

Python 作为一种流行的编程语言,提供了多种 JSON 相关的方法,使得开发者可以方便地处理 JSON 数据。

本文将介绍 Python 中的 JSON 方法。

下面是本店铺为大家精心编写的3篇《Python 的 JSON 方法》,供大家借鉴与参考,希望对大家有所帮助。

《Python 的 JSON 方法》篇11. JSON 概述JSON 是一种用于表示数据的文本格式。

它通常用于在 Web 应用程序之间传递数据,以及在各种编程语言之间进行数据交换。

JSON 数据可以使用各种编程语言中的库进行解析和生成。

在 Python 中,JSON 数据通常使用字符串形式表示。

可以使用Python 内置的 json 模块来解析和生成 JSON 数据。

下面是一些常用的 JSON 方法。

2. JSON 解析JSON 解析是将 JSON 字符串转换为 Python 对象的过程。

在Python 中,可以使用 json 模块中的 loads 函数来解析 JSON 字符串。

loads 函数将 JSON 字符串解析为一个 Python 对象 (通常是一个字典或列表)。

例如,下面的代码将 JSON 字符串解析为一个 Python 字典:```import jsonjson_str = "{"name": "John", "age": 30, "hobbies": ["reading", "swimming"]}"json_obj = json.loads(json_str)print(json_obj)```输出结果:```{"name": "John","age": 30,"hobbies": ["reading","swimming"]}```3. JSON 生成JSON 生成是将 Python 对象转换为 JSON 字符串的过程。

python json 高级用法

python json 高级用法

python json 高级用法中括号(Square brackets)在Python中具有多种用法,特别是在处理JSON (JavaScript Object Notation)数据时,它们是非常有用的。

在本文中,我们将深入探讨Python中JSON的高级用法,并逐步回答相关问题。

第一部分:JSON简介JSON是一种轻量级的数据交换格式,经常用于将数据从服务器发送到Web页面。

它简单易懂,有助于在不同编程语言之间进行数据交换。

JSON数据采用键值对的形式,而且可以包含嵌套的数据类型,如列表和字典。

第二部分:使用JSON模块在Python中,处理JSON数据的首选模块是json。

这个模块提供了将JSON 数据转换为Python对象以及将Python对象转换为JSON数据的功能。

首先,我们需要导入json模块:pythonimport json接下来,我们可以使用json模块提供的loads()函数将JSON字符串转换为Python对象。

例如,假设我们有以下JSON字符串:pythonjson_str = '{"name": "John", "age": 30, "city": "New York"}'我们可以使用如下代码将其转换为Python对象:pythonpython_obj = json.loads(json_str)现在,python_obj变量将包含以下Python字典对象:python{"name": "John", "age": 30, "city": "New York"}我们还可以使用dumps()函数将Python对象转换为JSON字符串。

例如,假设我们有以下Python字典对象:python_obj = {"name": "John", "age": 30, "city": "New York"}我们可以使用如下代码将其转换为JSON字符串:pythonjson_str = json.dumps(python_obj)现在,json_str变量将包含以下JSON字符串:python'{"name": "John", "age": 30, "city": "New York"}'第三部分:读取JSON文件json模块还提供了从文件中读取JSON数据的功能。

python3处理json数据

python3处理json数据

python3处理json数据 获取actuator的值[root@mongo_rs1 tmp]# cat test.pyimport requestsimport jsonurl = ':8888/actuator/metrics/tomcat.sessions.active.max'payload = {'some': 'data'}headers = {'content-type': 'application/json'}ret = requests.get(url, data=json.dumps(payload), headers=headers)print(ret.text)json_data=json.loads(ret.text)value=json_data.get('measurements')[0].get('value')measurements=json_data.get('measurements')#strs=measurements[0]#value=strs.get('value')print(value)print(value-1.0)#print(ret.cookies)[root@mongo_rs1 tmp]#[root@mongo_rs1 tmp]# python3 test.py{"name":"tomcat.sessions.active.max","measurements":[{"statistic":"VALUE","value":1.0}],"availableTags":[]} 1.00.0输出json的值[root@mongo_rs1 tmp]# cat te.pyimport jsonjson_data = """{"favourite":{"bkmrk":{"id1490843709594066":{"guid":"904eff52277f403b89f6410fe2758646.11","lcate":"1"},"id1490843712805183":{"guid":"58457f60eca64025bc43a978f9c98345.16","lcate":"2"},"id149084371467327":{"guid":"a0f907f9dc8b40f689b083f3eba7228b.16","lcate":"3"},"id1490843716295393":{"guid":"eb75d929455e468bb712e7bc2025d11a.16","lcate":"4"}}}}"""data = json.loads(json_data)for v in data['favourite']['bkmrk'].values():print("%s;%s" % (v['lcate'], v['guid']))[root@mongo_rs1 tmp]#[root@mongo_rs1 tmp]# python3 te.py1;904eff52277f403b89f6410fe2758646.112;58457f60eca64025bc43a978f9c98345.163;a0f907f9dc8b40f689b083f3eba7228b.164;eb75d929455e468bb712e7bc2025d11a.16[root@mongo_rs1 tmp]#。

Python处理JSON

Python处理JSON

概念序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON、XML等。

反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象。

JSON(JavaScript Object Notation):一种轻量级数据交换格式,相对于XML而言更简单,也易于阅读和编写,机器也方便解析和生成,Json是JavaScript中的一个子集。

Python2.6开始加入了JSON模块,无需另外下载,Python的Json模块序列化与反序列化的过程分别是encoding和decodingencoding:把一个Python对象编码转换成Json字符串decoding:把Json格式字符串解码转换成Python对象对于简单数据类型(string、unicode、int、float、list、tuple、dict),可以直接处理。

json.dumps方法对简单数据类型encoding:import jsondata = [{'a':"A",'b':(2,4),'c':3.0}] #list对象print "DATA:",repr(data)data_string = json.dumps(data)print "JSON:",data_string输出:DATA: [{'a':'A','c':3.0,'b':(2,4)}] #python的dict类型的数据是没有顺序存储的JSON: [{"a":"A","c":3.0,"b":[2,4]}]JSON的输出结果与DATA很相似,除了一些微妙的变化,如python的元组类型变成了Json 的数组,Python到Json的编码转换规则是:json.loads方法处理简单数据类型的decoding(解码)转换import jsondata = [{'a':"A",'b':(2,4),'c':3.0}] #list对象data_string = json.dumps(data)print "ENCODED:",data_stringdecoded = json.loads(data_string)print "DECODED:",decodedprint "ORIGINAL:",type(data[0]['b'])print "DECODED:",type(decoded[0]['b'])输出:ENCODED: [{"a": "A", "c": 3.0, "b": [2, 4]}]DECODED: [{u'a': u'A', u'c': 3.0, u'b': [2, 4]}]ORIGINAL: <type 'tuple'>DECODED: <type 'list'>解码过程中,json的数组最终转换成了python的list,而不是最初的tuple类型,Json到Python的解码规则是:json的人文关怀编码后的json格式字符串紧凑的输出,而且也没有顺序,因此dumps方法提供了一些可选的参数,让输出的格式提高可读性,如sort_keys是告诉编码器按照字典排序(a到z)输出。

python----json数据处理

python----json数据处理

python----json数据处理1、什么是JSON:JSON(JavaScript Object Notation) 是⼀种轻量级的数据交换格式。

第⼀次接触到它是在进⾏服务器端接⼝测试的时候。

现在很多服务器返回的结果都是json格式。

主要是由于它⽐较容易解析和⽣成。

JSON格式的数据本质上⼀种被格式化了的字符串。

2、Python处理JSON⽤Python处理json也很简单,Python⾃带有json模块。

可以对python对象与json字符串进⾏相互转换。

2.1、编码json.dumps()把⼀个Python对象编,码转换成Json字符串。

举个例⼦:>>> import json>>> python_obj = [[1,2,3],123,123.123,'abc',{'key1':(1,2,3),'key2':(4,5,6)},True,False,None]>>> json_str=json.dumps(python_obj)>>> print json_str[[1, 2, 3], 123, 123.123, "abc", {"key2": [4, 5, 6], "key1": [1, 2, 3]}, true, false, null]12345通过输出的结果可以看出,简单类型的python对象通过encode之后跟其原始的repr()输出结果⾮常相似,但是有些数据类型进⾏了改变,例如上例中的元组则转换为了列表,True变成了true,Flase变成了false,None变成了null。

也就是说在json的编码过程中,会存在从python原始类型向json类型的转化过程。

具体的转化对照如下:json.dumps⽅法提供了很多好⽤的参数可供选择,⽐较常⽤的有sort_keys(对dict对象进⾏排序,我们知道默认dict是⽆序存放的),skipkeys(对于键不是基本类型Python字典键值对将被过滤),indent(格式化输出⽤的)等参数。

python处理json字符串(使用json.loads而不是eval())

python处理json字符串(使用json.loads而不是eval())

python处理json字符串(使⽤json.loads⽽不是eval())eval 跟json.loads 是不⼀样的函数,是有实现不⼀样功能的地⽅,但是在某些地⽅它们两个函数的功能是⼀样的,在这个时候如果对执⾏效率有⼀定要求的话,建议不要⽤eval,改⽤json.loads会有惊喜哦。

⼀、evaleval() 函数⽤来执⾏⼀个字符串表达式,并返回表达式的值。

⼆、json.loadsjson.loads ⽤于解码 JSON 数据。

该函数返回 Python 字段的数据类型。

json.loads与eval都能将json字符串转成python中的对象,但在实际⼯作中发现,在处理json字符串时,json.loads的性能远超eval三、效率对⽐下列代码是通过json.loads和eval⽅式将103KB⼤⼩的json字符串转python字典的耗时对⽐:old_data = redis_con.get('api-case-version:' + str(version_id))if old_data:l_start = datetime.datetime.now()load_dict = json.loads(old_data)l_end = datetime.datetime.now()print('json.loads', l_end - l_start)e_start = datetime.datetime.now()old_dict = eval(old_data)e_end = datetime.datetime.now()print('eval', e_end - e_start)耗时对⽐耗时相差了13倍多。

在平时的场景下很难遇到处理⼤JSON字符串的情况,所以使⽤loads或eval差别可以忽略不计。

但在我⽬前的项⽬中,是需要取swagger上的所有接⼝做对⽐,JSON字符串的⼤⼩经常达到1M+,这时使⽤loads和eval就有了较为明显的性能差异了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

概念序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON、XML 等。

反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象。

JSON(JavaScript Object Notation):一种轻量级数据交换格式,相对于XML 而言更简单,也易于阅读和编写,机器也方便解析和生成,Json 是JavaScript 中的一个子集。

Python2.6 开始加入了JSON 模块,无需另外下载,Python 的Json 模块序列化与反序列化的过程分别是encoding 和decodingencoding:把一个Python 对象编码转换成Json 字符串decoding:把Json 格式字符串解码转换成Python 对象对于简单数据类型(string、unicode、int、float、list、tuple、dict),可以直接处理。

json.dumps 方法对简单数据类型encoding:import jsondata = [{'a':"A",'b':(2,4),'c':3.0}] #list 对象print "DATA:",repr(data)data_string = json.dumps(data)print "JSON:",data_string输出:DATA: [{'a':'A','c':3.0,'b':(2,4)}] #python 的dict 类型的数据是没有顺序存储的JSON: [{"a":"A","c":3.0,"b":[2,4]}]JSON 的输出结果与DATA 很相似,除了一些微妙的变化,如python 的元组类型变成了Json 的数组,Python 到Json 的编码转换规则是:json.loads 方法处理简单数据类型的decoding(解码)转换import jsondata = [{'a':"A",'b':(2,4),'c':3.0}] #list 对象data_string = json.dumps(data)print "ENCODED:",data_stringdecoded = json.loads(data_string)print "DECODED:",decodedprint "ORIGINAL:",type(data[0]['b'])print "DECODED:",type(decoded[0]['b'])输出:ENCODED: [{"a": "A", "c": 3.0, "b": [2, 4]}]DECODED: [{u'a': u'A', u'c': 3.0, u'b': [2, 4]}]ORIGINAL: <type 'tuple'>DECODED: <type 'list'>解码过程中,json 的数组最终转换成了 python 的 list ,而不是最初的 tuple 类型,Json 到 Python 的解码规则是:json 的人文关怀编码后的 json格式字符串紧凑的输出,而且也没有顺序,因此 dumps 方法提供了一些可选 的参数,让输出的格式提高可读性,如 是告诉编码器按照字典排序(a 到 z)输出。

import jsondata = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ]print 'DATA:', repr(data)unsorted = json.dumps(data)print 'JSON:', json.dumps(data)print 'SORT:', json.dumps(data, sort_keys=True)sort_keys输出:DATA: [{'a': 'A', 'c': 3.0, 'b': (2, 4)}]JSON: [{"a": "A", "c": 3.0, "b": [2, 4]}]SORT: [{"a": "A", "b": [2, 4], "c": 3.0}:import jsondata = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ]print 'DATA:', repr(data)print 'NORMAL:', json.dumps(data, sort_keys=True)print 'INDENT:', json.dumps(data, sort_keys=True, indent=2)输出:DATA: [{'a': 'A', 'c': 3.0, 'b': (2, 4)}]NORMAL: [{"a": "A", "b": [2, 4], "c": 3.0}]INDENT: [{"a": "A","b": [2,4],"c": 3.0}]", :"后面都有个空 格,这都是为了美化输出结果的作用,但是在我们传输数据的过程中,越精简越好,冗余的东西全部去掉,因此就可以加上 separators 参数:import jsondata = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ]print 'DATA:', repr(data)print 'repr(data):', len(repr(data))print 'dumps(data):', len(json.dumps(data))print 'dumps(data, indent=2) :', len(json.dumps(data, indent=2))print 'dumps(data, separators):', len(json.dumps(data, separators=(',',':')))输出:DATA: [{'a': 'A', 'c': 3.0, 'b': (2, 4)}]repr(data): 35 dumps(data) : 35dumps(data, indent=2) : 76dumps(data, separators): 29数,在 encoding 过程中,dict 对象的 key 只可以是 string 对象,如果是其他类型, 那么在编码过程中就会抛出key 的处理.import jsonstring 对象当作data= [ { 'a':'A', 'b':(2, 4), 'c':3.0, ('d',):'D tuple' } ]try:print json.dumps(data)except (TypeError, ValueError) as err:print 'ERROR:', errprintprint json.dumps(data, skipkeys=True)输出:ERROR: keys must be a string[{"a": "A", "c": 3.0, "b": [2, 4]}]让 json 支持自定义数据类型以上例子都是基于 python 的 built-in 类型的,对于自定义类型的数据结构,json 模块默认是转换函数:import jsonclass MyObj(object):def init (self, s):self.s = sdef repr (self):return '<MyObj(%s)>' % self.sobj = .MyObj('helloworld')try:print json.dumps(obj)except TypeError, err:print 'ERROR:', err#转换函数def convert_to_builtin_type(obj):print 'default(', repr(obj), ')'# 把MyObj 对象转换成dict 类型的对象d = { ' class ':obj. class . name ,' module ':obj. module ,}d.update(obj. dict )return dprint json.dumps(obj, default=convert_to_builtin_type)输出:ERROR: <MyObj(helloworld)> is not JSON serializabledefault( <MyObj(helloworld)> ){"s": "hellworld", " module ": "MyObj", " class ": " main "}#注意:这里的class 和module 根据你代码的所在文件位置不同而不同相反,如果要把json decode 成python 对象,同样也需要自定转换函数,传递给json.loads 方法的#jsontest.pyimport jsonclass MyObj(object):def init (self,s):self.s = sdef repr (self):return "<MyObj(%s)>" % self.sdef dict_to_object(d):if ' class ' in d:class_name = d.pop(' class ')module_name = d.pop(' module ')module = import (module_name)print "MODULE:",moduleclass_ = getattr(module,class_name)print "CLASS",class_args = dict((key.encode('ascii'),value) for key,value in d.items())print 'INSTANCE ARGS:',argsinst = class_(**args)else:inst = dreturn instencoded_object = '[{"s":"helloworld"," module ":"jsontest"," class ":"MyObj"}]'myobj_instance = json.loads(encoded_object,object_hook=dict_to_object)print myobj_instance输出:MODULE: <module 'jsontest' from 'E:\Users\liuzhijun\workspace\python\jsontest.py'> CLASS <class 'jsontest.MyObj'>INSTANCE ARGS: {'s': u'helloworld'}[<MyObj(helloworld)>]MODULE: <module 'jsontest' from 'E:\Users\liuzhijun\workspace\python\jsontest.py'>CLASS <class 'jsontest.MyObj'>INSTANCE ARGS: {'s': u'helloworld'}[<MyObj(helloworld)>]使用 Encoder 与 Decoder 类实现 json 编码的转换JSONEncoder 有一个迭代接口以方便的把逐个数据写到文件或网络流中,而不需要一次性就把数据读入内存.import jsonencoder = json.JSONEncoder()data = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ]for part in encoder.iterencode(data):print 'PART:', part输出:PART: [PART: {PART: "a"PART: :PART: "A"PART: ,PART: "c"PART: :PART: 3.0PART: ,PART: "b"PART: :PART: [2PART: , 4PART: ]PART: }PART: ]串作为 dict 的 key ),对于自定义的对象,我们只需从些 JSONEncoder 的 其实现方式与上面提及的函数import jsonimport json_myobjclass MyObj(object):def init (self,s):self.s = sdef repr (self):return "<MyObj(%s)>" % self.sclass MyEncoder(json.JSONEncoder):def default(self, obj):print 'default(', repr(obj), ')'# Convert objects to a dictionary of their representationd = { ' class ':obj. class . name ,' module ':obj. module ,}d.update(obj. dict )return dobj = json_myobj.MyObj('helloworld')print objprint MyEncoder().encode(obj)输出:<MyObj(internal data)>default( <MyObj(internal data)> ){"s": "helloworld", " module ": "Myobj", " class ": "MyObj"}从json 对Python 对象的转换:class MyDecoder(json.JSONDecoder):def init (self):json.JSONDecoder. init (self, object_hook=self.dict_to_object)def dict_to_object(self, d):if ' class ' in d:class_name = d.pop(' class ')module_name = d.pop(' module ')module = import (module_name)print 'MODULE:', moduleclass_ = getattr(module, class_name)print 'CLASS:', class_args = dict( (key.encode('ascii'), value) for key, value in d.items())print 'INSTANCE ARGS:', argsinst = class_(**args)else:inst = dreturn instencoded_object = '[{"s": "helloworld", " module ": "jsontest", " class ": "MyObj"}]'myobj_instance = MyDecoder().decode(encoded_object)print myobj_instance输出:MODULE: <module 'jsontest' from 'E:\Users\liuzhijun\workspace\python\jsontest.py'> CLASS: <class 'jsontest.MyObj'>INSTANCE ARGS: {'s': u'helloworld'}[<MyObj(helloworld)>]json 格式字符串写入到文件流中上面的例子都是在内存中操作的,如果对于大数据,把他编码到一个类文件(file-like)中更合import jsonimport tempfiledata = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ]f = dTemporaryFile(mode='w+')json.dump(data, f)f.flush()print open(, 'r').read()输出:[{"a": "A", "c": 3.0, "b": [2, 4]}]类似的:import jsonimport tempfilef = dTemporaryFile(mode='w+')f.write('[{"a": "A", "c": 3.0, "b": [2, 4]}]') f.flush()f.seek(0)print json.load(f)输出:[{u'a': u'A', u'c': 3.0, u'b': [2, 4]}]。

相关文档
最新文档