Json의 가장 널리 사용되는 응용 프로그램은 AJAX에서 웹 서버와 클라이언트 간의 통신을 위한 데이터 형식입니다. 이 기사에서는 주로 Python의 json 작업에 대한 요약을 소개하며, 관심 있는 사용자는 더 자세히 알아볼 수 있습니다. .
Json 소개: Json(전체 이름은 JavaScript Object Notation)은 경량 데이터 교환 형식입니다. Json의 가장 널리 사용되는 애플리케이션은 AJAX의 웹 서버와 클라이언트 간의 통신을 위한 데이터 형식입니다. 요즘은 http 요청에도 많이 사용되기 때문에 각종 json을 익히는 것이 당연합니다. Python 공식 웹사이트 주소: https://docs.python.org/2/library/json.html?highlight=json#module-json
Json API 사용법: Python은 버전 2.6 이전에 다운로드해야 합니다. 패키지 이는 설치 후에만 사용할 수 있으며 이는 오늘날 RF에서 SeleniumLibrary를 사용하는 것과 다소 유사합니다. 그러나 2.6의 공식 문서(https://docs.python.org/2.6/whatsnew/2.6.html)에는 "다중 처리 및 json과 같은 몇 가지 중요한 새 패키지가 표준 라이브러리에 추가되었지만 Python 3 및 2.6과 비교하면 이 패키지에는 더 많은 새로운 기능이 도입되지 않습니다. "따라서 Python 2.6 이상의 아동용 신발을 설치할 때 json 패키지를 다운로드할 필요가 없습니다. 필요한 곳에서 json을 가져오기만 하면 됩니다. 설치 후 사용하세요. 디렉터리의 Lib에서 아래와 같이 두 패키지를 볼 수 있습니다(클릭하여 소스 코드를 주의 깊게 읽으면 더 많은 결과를 얻을 수 있습니다). 버전 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}
다른 매개변수의 사용법은 동일합니다. 다음은 학습된 일부 코드 조각입니다.
dic1 = {'type':'dic1','username':'loleina','age':16} json_dic1 = json.dumps(dic1) print json_dic1 json_dic2 = json.dumps(dic1,sort_keys=True,indent =4,separators=(',', ': '),encoding="gbk",ensure_ascii=True ) print json_dic2
If 예제에서 'username' 키 값을 중국어 단어 "test"로 대체하면 매개변수가 없는 첫 번째 변환이 사용되면 오류가 보고되지만 매개변수가 있는 두 번째 변환은 정상적으로 실행됩니다.
은 실제로 함수의 매개변수를 이해하는 과정입니다. 다음은 일반적으로 사용되는 몇 가지 매개변수입니다.
건너뛰기 키: 기본값은 False입니다. dict 키의 데이터가 Python의 기본 유형(str, unicode, int, long, float, bool, None)이 아닙니다. False로 설정하면 TypeError가 보고됩니다. 이때 True로 설정하면 이 유형의 키를 건너뜁니다
ensure_ascii: 기본값은 True입니다. dict에 ASCII가 아닌 문자가 포함되어 있으면 설정 후 데이터가 uXXXX와 유사하게 표시됩니다. False로 설정하면 일반적으로 indent를 표시할 수 있습니다. 음수가 아닌 정수여야 합니다. 0이거나 비어 있으면 데이터가 한 줄에 표시됩니다. 그렇지 않으면 줄이 바뀌고 앞의 공백이 표시됩니다. 들여쓰기 개수에 따라 표시되므로 json이 인쇄됩니다. 데이터는 Pretty-printed json이라고도 합니다. 구분 기호는 실제로 (item_separator, dict_separator)의 튜플이며 기본값은 (' ,',':'); 이는 사전의 키가 ","로 구분되고 KEY와 값이 ":"으로 구분됨을 의미합니다. encoding: 기본값은 UTF-8이며 json 데이터의 인코딩 방법을 설정합니다. sort_keys: 키 값에 따라 데이터를 정렬합니다. Decode 프로세스는 json 객체를 python 객체로 변환하는 프로세스입니다. 일반적으로 사용되는 두 가지 함수는 로드 및 로드 함수입니다. 덤프와 덤프의 차이점은 동일합니다.if __name__ == '__main__': # 将python对象test转换json对象 test = [{"username":"测试","age":16},(2,3),1] print type(test) python_to_json = json.dumps(test,ensure_ascii=False) print python_to_json print type(python_to_json) # 将json对象转换成python对象 json_to_python = json.loads(python_to_json) print json_to_python print type(json_to_python)
从上面2个例子的测试结果可以看到,python的一些基本类型通过encode之后,tuple类型就转成了list类型了,再将其转回为python对象时,list类型也并没有转回成tuple类型,而且编码格式也发生了变化,变成了Unicode编码。具体转化时,类型变化规则如下所示:
Python-->Json
Json-->Python
Json处理中文问题:
关于python字符串的处理问题,如果深入的研究下去,我觉得可以写2篇文章了(实际上自己还没整很明白),在这里主要还是总结下使用python2.7.11处理json数据的问题。前期做接口测试,处理最多的事情就是,把数据组装成各种协议的报文,然后发送出去。然后对返回的报文进行解析,后面就遇到将数据封装在json内嵌入在http的body内发送到web服务器,然后服务器处理完后,返回json数据结果的问题。在这里面就需要考虑json里有中文数据,怎么进行组装和怎么进行解析,以下是基础学习的一点总结:
第一:Python 2.7.11的默认编码格式是ascii编码,而python3的已经是unicode,在学习编解码的时,有出现乱码的问题,也有出现list或者dictionary或者tuple类型内的中文显示为unicode的问题。出现乱码的时候,应该先看下当前字符编码格式是什么,再看下当前文件编码格式是什么,或者没有设置文件格式时,查看下IDE的默认编码格式是什么。最推崇的方式当然是每次编码,都对文件编码格式进行指定,如在文件前 设置# coding= utf-8。
第二:字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。因此,转码的时候一定要先搞明白,字符串str是什么编码,然后decode成unicode,然后再encode成其他编码
第三:将json数据转换成python数据后,一般会得到一个dict类型的变量,此时内部的数据都是unicode编码,所以中文的显示看着很痛苦,但是对于dict得到每个key的value后,中文就能正常显示了,如下所示:
# coding= utf-8 import json import sys if __name__ == '__main__': # 将python对象test转换json对象 test = {"username":"测试","age":16} print type(test) python_to_json = json.dumps(test,ensure_ascii=False) print python_to_json print type(python_to_json) # 将json对象转换成python对象 json_to_python = json.loads(python_to_json) print type(json_to_python) print json_to_python['username']
运行结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHP中文网。
更多Python의 json 작업 요약에 대한 심층적인 이해相关文章请关注PHP中文网!