Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 JSON 형식화

<시간/>

JSON(Java Script Object Notation)은 가볍고 잘 받아들여지는 데이터 교환 형식입니다. Python에서 JSON 형식화 기술을 사용하여 JSON 문자열을 Python 개체로 변환하고 Python 개체를 JSON 문자열로 변환할 수도 있습니다.

이러한 기능을 사용하려면 Python의 json 모듈을 사용해야 합니다. json 모듈은 Python 표준 라이브러리와 함께 제공됩니다. 따라서 먼저 먼저 가져와야 합니다.

import json

Python 객체를 JSON 문자열로 변환

json 모듈에는 Python 객체를 JSON 문자열로 변환하는 dump() 및 dumps()와 같은 메서드가 있습니다. dump() 메서드는 두 개의 인수를 사용합니다. 첫 번째 인수는 객체이고 두 번째 인수는 파일 객체입니다. 이 메서드는 개체를 JSON 형식의 stream으로 직렬화합니다. 파일 개체에. 마찬가지로 dumps() 메서드는 하나의 인수만 사용합니다. 인수는 객체입니다. 객체를 JSON 문자열로 변환합니다. .

예시 코드

import json
from io import StringIO
str_io_obj = StringIO()
#Use JSON Dump to make StringIO
json.dump(["India", "Australia", "Brazil"], str_io_obj)
print('StringIO Object value: ' + str(str_io_obj.getvalue()))
my_json = {
   "name" : "Kalyan",
   "age" : 25,
   "city" : 'Delhi'
}
print(json.dumps(my_json, indent=4))

출력

StringIO Object value: ["India", "Australia", "Brazil"] {
   "name": "Kalyan",
   "age": 25,
   "city": "Delhi"
}

JSON 문자열을 Python 객체로 변환

이 경우 JSON 문자열을 역직렬화합니다. 두 가지 다른 방법이 있습니다. load() 및 load()입니다. 이 두 가지 방법 모두 JSON 파일을 인수로 사용합니다. load()는 파일 객체 데이터에서 python 객체로 변환하고, load()는 문자열 유형 데이터에서 변환합니다.

예시 코드

import json
from io import StringIO
str_io_obj = StringIO('["xyz", "abc", "xyz", "pqr"]')
#load from StringIO
print('Load: ' + str(json.load(str_io_obj)))
print('String to Json: ' + str(json.loads('{"xyz" : 1, "abc" : 2, "xyz" : 3, "pqr" : 4}')))

출력

Load: ['xyz', 'abc', 'xyz', 'pqr']
String to Json: {'xyz': 3, 'abc': 2, 'pqr': 4}

Python의 JSON 인코더 및 디코더 클래스

JSONEncoder 클래스는 Python 개체를 JSON 형식으로 변환하는 데 사용됩니다. 여기 이 예에서 JSONEncoder를 사용하여 복소수 개체를 JSON 유형 개체로 변환하는 방법을 볼 수 있습니다.

예시 코드

import json
class Comp_Encoder(json.JSONEncoder):
   def default(self, comp_obj):
      if isinstance(comp_obj, complex):
      return [comp_obj.real, comp_obj.imag]
      return json.JSONEncoder.default(self, comp_obj)
      print(json.dumps(5+8j, cls=Comp_Encoder))

출력

[5.0, 8.0]

JSONDecoder 클래스는 역동작을 수행합니다.

예시 코드

import json
my_str = '{"Asim" : 25, "Priyesh" : 23, "Asim" : "28"}'
#Decode JSON using the JSONDecoder
print(json.JSONDecoder().decode(my_str))
print(json.JSONDecoder().raw_decode(my_str))

출력

{'Asim': '28', 'Priyesh': 23}
({'Asim': '28', 'Priyesh': 23}, 44)