Python 데이터 지속성-JSON 모듈
JSON은 JavaScript Object Notation. 경량 데이터 교환 형식입니다. 여러 프로그래밍 언어에서 지원하는 언어 독립적이며 교차 플랫폼 텍스트 형식입니다. 이 형식은 웹 서버와 클라이언트 간의 데이터 교환에 사용됩니다.
JSON 형식은 pickle과 유사합니다. 그러나 피클 직렬화는 Python에 따라 다르지만 JSON 형식은 여러 언어로 구현되어 범용 표준이되었습니다. Python의 표준 라이브러리에있는 json 모듈의 기능 및 인터페이스는 pickle 및 marshal 모듈과 유사합니다.
pickle 모듈과 마찬가지로 json 모듈은 dumps() 과 loads() Python 객체를 JSON 인코딩 문자열로 직렬화하는 함수 dump() 과 load() 함수는 직렬화 된 Python 객체를 파일에 쓰고 읽습니다.
dumps() −이 함수는 객체를 JSON 형식으로 변환합니다.
loads() −이 함수는 JSON 문자열을 다시 Python 객체로 변환합니다.
다음 예제는 이러한 기능의 기본 사용법을 보여줍니다-
import json
data=['Rakesh',{'marks':(50,60,70)}]
s=json.dumps(data)
json.loads(s)
dumps () 함수는 선택적 sort_keys 인수를 사용할 수 있습니다. 기본적으로 False입니다. True로 설정하면 사전 키가 JSON 문자열에서 정렬 된 순서로 나타납니다.
dumps () 함수에는 숫자를 값으로 사용하는 indent라는 또 다른 선택적 매개 변수가 있습니다. 인쇄 출력과 유사하게 json 문자열의 형식화 된 표현의 각 세그먼트의 길이를 결정합니다.
json 모듈에는 위의 기능에 해당하는 객체 지향 API도 있습니다. 모듈에는 JSONEncoder 및 JSONDecoder의 두 가지 클래스가 정의되어 있습니다.
JSONEncoder 클래스
이 클래스의 객체는 Python 데이터 구조용 인코더입니다. 각 Python 데이터 유형은 다음 표와 같이 해당 JSON 유형으로 변환됩니다.
파이썬 | JSON |
---|---|
딕트 | 목적 |
목록, 튜플 | 정렬 |
Str | 끈 |
int, float, int- 및 float 파생 열거 형 | 번호 |
진실 | 진실 |
그릇된 | 그릇된 |
없음 | 없는 |
JSONEncoder 클래스는 JSONEncoder () 생성자에 의해 인스턴스화됩니다. 인코더 클래스에 다음과 같은 중요한 방법이 정의되어 있습니다.
Sr. 아니. | 방법 및 설명 |
---|---|
1 | encode() Python 객체를 JSON 형식으로 직렬화합니다. |
2 | iterencode() 개체를 인코딩하고 개체에있는 각 항목의 인코딩 된 형식을 생성하는 반복기를 반환합니다. |
삼 | indent 인코딩 된 문자열의 들여 쓰기 수준을 결정합니다. |
4 | sort_keys 키가 정렬 된 순서로 표시되도록하려면 true 또는 false입니다. |
5 | Check_circular True이면 컨테이너 유형 객체에서 순환 참조를 확인합니다. |
다음 예제는 Python 목록 객체를 인코딩합니다.
e=json.JSONEncoder()
e.encode(data)
JSONDecoder 클래스
이 클래스의 객체는 파이썬 데이터 구조로 다시 json 문자열로 디코딩하는 데 도움이됩니다. 이 클래스의 주요 메서드는 decode ()입니다. 다음 예제 코드는 이전 단계에서 인코딩 된 문자열에서 Python 목록 객체를 검색합니다.
d=json.JSONDecoder()
d.decode(s)
json 모듈은 load() 과 dump() 객체와 같은 파일에 JSON 데이터를 쓰는 함수 – 디스크 파일 또는 바이트 스트림 일 수 있으며 데이터를 다시 읽을 수 있습니다.
덤프()
이 함수는 JSON 형식의 Python 개체 데이터를 파일에 씁니다. 파일은 'w'모드로 열어야합니다.
import json
data=['Rakesh', {'marks': (50, 60, 70)}]
fp=open('json.txt','w')
json.dump(data,fp)
fp.close()
이 코드는 현재 디렉토리에 'json.txt'를 생성합니다. 다음과 같이 내용을 보여줍니다-
["Rakesh", {"marks": [50, 60, 70]}]
하중()
이 함수는 파일에서 JSON 데이터를로드하고 여기에서 Python 객체를 반환합니다. 파일은 읽기 권한으로 열어야합니다 ( 'r'모드가 있어야 함).
Example
fp=open('json.txt','r')
ret=json.load(fp)
print (ret)
fp.close()
Output
['Rakesh', {'marks': [50, 60, 70]}]
그만큼 json.tool 모듈에는 또한 파일의 데이터를 검증하고 꽤 형식화 된 방식으로 JSON 객체를 인쇄하는 명령 줄 인터페이스가 있습니다.
C:\python37>python -m json.tool json.txt
[
"Rakesh",
{
"marks": [
50,
60,
70
]
}
]