Python JSON Start

BioinformaticsAndMe








Python JSON

: JSON(JavaScript Object Notation)

→ "키-값 쌍"으로 이루어진 데이터 오브젝트 전달을 위해, 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷

→ 머신에 의해 쉽게 읽혀지도록 데이터를 구조화하는 형태

→ API 서버에서 데이터가 오고 갈때, JSON 포맷을 사용


: API로 받은 JSON 결과를 살펴보면, 파이썬 딕셔너리/리스트/문자열/정수 자료형의 혼합 형태임을 알 수 있음





Open Notify API 를 통해서, Python JSON 예시를 살펴보자

ISS(International Space Station; 국제우주정거장)에 대한 자료이다


우리가 예제로 사용될 Endpoint는 http://api.open-notify.org/astros.json

*Endpoint(엔드포인트) - 사용자들이 접속하는 웹 서버 등의 서버 시스템

    (보통 API 요청시 도메인 끝에 붙이는 URL, 'astros.json')



1. JSON response in Python

# requests 라이브러리 import requests

# 엔드포인트의 우주비행사 데이터 리턴

response = requests.get("http://api.open-notify.org/astros.json") print(response.status_code)

200   #200은 우리의 request가 성공적이었음을 의미

# API response가 json 포맷임을 확인

print(response.json())

{'people': [{'name': 'Alexey Ovchinin', 'craft': 'ISS'}, {'name': 'Nick Hague', 'craft': 'ISS'}, {'name': 'Christina Koch', 'craft': 'ISS'}, {'name': 'Alexander Skvortsov', 'craft': 'ISS'}, {'name': 'Luca Parmitano', 'craft': 'ISS'}, {'name': 'Andrew Morgan', 'craft': 'ISS'}, {'name': 'Oleg Skripochka', 'craft': 'ISS'}, {'name': 'Jessica Meir', 'craft': 'ISS'}, {'name': 'Hazzaa Ali Almansoori', 'craft': 'ISS'}], 'number': 9, 'message': 'success'}




2. json library

: 파이썬에는 JSON 포맷을 다루기 위한 표준 라이브러리 존재 → json package

: json을 임포트하여, 딕셔너리나 리스트를 JSON 포맷으로 변환할 수 있음

: json 라이브러리는 두 가지 주요한 기능을 가짐

json.dumps() - 파이썬 객체를 받아 문자열로 변환(dump)

json.loads()JSON 문자열을 가져와 파이썬 객체로 변환(load)

# json 라이브러리 ​import json

# Python JSON 객체의 구조화된 형태를 출력하는 definition

def jprint(obj): text = json.dumps(obj, sort_keys=True, indent=4) print(text)

# 데이터 구조를 더 쉽게 이해하도록 출력 (우주에 있는 9명과 각각의 이름)

jprint(response.json())

{ "message": "success", "number": 9, "people": [ { "craft": "ISS", "name": "Alexey Ovchinin" }, { "craft": "ISS", "name": "Nick Hague" }, { "craft": "ISS", "name": "Christina Koch" }, { "craft": "ISS", "name": "Alexander Skvortsov" }, { "craft": "ISS", "name": "Luca Parmitano" }, { "craft": "ISS", "name": "Andrew Morgan" }, { "craft": "ISS", "name": "Oleg Skripochka" }, { "craft": "ISS", "name": "Jessica Meir" }, { "craft": "ISS", "name": "Hazzaa Ali Almansoori" } ] }




3. Using an API with Query Parameters

: API endpoint에서 쿼리 파라미터를 갖는 것은 매우 일반적

파라미터를 딕셔너리로 만든 후, requests.get 함수에 전달 가능

파라미터를 URL에 직접 추가하여, 동일한 작업을 직접 수행 가능

*http://api.open-notify.org/iss-pass.json?lat=40.71&lon=-74.

# lat(latitude;위도), lon(longitude;경도) 파라미터 지정 parameters = { "lat": 40.71, "lon": -74 }

# 파라미터에 지정된 좌표를 사용하여 request

response = requests.get("http://api.open-notify.org/iss-pass.json", params=parameters)

# JSON 포맷으로 response 결과 확인

jprint(response.json())

{ "message": "success", "request": { "altitude": 100, "datetime": 1570007025, "latitude": 40.71, "longitude": -74.0, "passes": 5 }, "response": [ { "duration": 410, "risetime": 1570037505 }, { "duration": 643, "risetime": 1570043152 }, { "duration": 614, "risetime": 1570048982 }, { "duration": 553, "risetime": 1570054871 }, { "duration": 593, "risetime": 1570060715 } ] }





#API 기초 학습을 위해 아래 포스트 참조

https://bioinformaticsandme.tistory.com/135

https://bioinformaticsandme.tistory.com/136





#Reference

1) https://ko.wikipedia.org/wiki/JSON

2) https://blog.naver.com/zzzcc33/221594710730

3) https://realpython.com/python-json/






Python JSON End

BioinformaticsAndMe

'Python' 카테고리의 다른 글

[Python] 주석 처리  (0) 2019.10.15
Anaconda 설치  (0) 2019.10.08
Python API  (0) 2019.09.30
Variable (Python 변수)  (0) 2019.09.25
Python이 성장하는 7가지 이유  (0) 2019.09.17

+ Recent posts