• 회원가입
  • 로그인
  • 구글아이디로 로그인

[basic] Python - JSON (제이슨)

1353  

목차

  1. Python에서 JSON 사용
  2. (JSON → Python Dictionay) 변환
  3. (Python Dictionary → JSON) 변환
  4. 결과 포맷 (= 출력 모양 변경) - 들여쓰기, 구분자변경
  5. 결과 정렬 - Key 기준 정렬
  6. Python Dictionay와 JSON String 비교

 

JSON (JavaScript object notation)

1. 데이터를 (저장・교환) 위한 구문.

2. JS 객체 표기법으로 작성된 텍스트.

 

Python에서 JSON 사용

json 모듈 가져와 사용 가능.

 

import json

 

 

(JSON → Python Dictionay) 변환

json.loads() 메서드 : (JSON → Python Dictionay) 변환. 

 

import json


# JSON 코드

x = '{ "id":"homzzang", "name":"홈짱", "level":10}'


# JSON → Python Dictionay

y = json.loads(x)


# Python dictionary

python(y) # {'id': 'homzzang', 'name': '홈짱', 'level': 10}

print(y["id"]) # homzzang

print(y["name"]) # 홈짱

print(y["level"]) # 10

 

 

(Python Dictionary → JSON) 변환

1. json.dumps() 메서드 : (Python Dictionary → JSON) 변환.

 

import json


# Python Dictionary

x = { "id":"homzzang", "name":"홈짱", "level":10}


# Python Dictionay → JSON

y = json.dumps(x, ensure_ascii=False)


# Python dictionary

print(y) # {"id": "homzzang", "name": "홈짱", "level": 10}

 

주의:

ensure_ascii=False 매개변수가 없으면,

한글 경우 아스키코드로 변환되어 출력됨.


2. (Python 객체 → JSON) 변환 시, 비슷한 유형으로 변환됨.


import json

 

# dict  →  Object

print(json.dumps({"name": "sinbi", "level": 10}))

# {"name": "sinbi", "level": 10}

 

# list  →  Array

print(json.dumps(["HTML", "CSS"]))

# ["HTML", "CSS"]

 

# tuple  →  Array

print(json.dumps(("JS", "JQUERY")))

# ["JS", "JQUERY"]

 

# str →  String 

print(json.dumps("홈짱닷컴 Homzzang.com", ensure_ascii=False))

# "홈짱닷컴 Homzzang.com"

 

# int  →  Number

print(json.dumps(34))

# 34

 

# float →  Number

print(json.dumps(12.34))

# 12.34

 

# True  →  true

print(json.dumps(True))

# true

 

# False  →  false

print(json.dumps(False))

# false

 

# None  →  null

print(json.dumps(None))

# null

 


[예제] (여러 타입이 들어간 Dictionary → JSON) 변환.

 

import json


x = {

  "name": "sinbi",

  "level": 10,

  "good": True,

  "nogood": False,

  "favorite": ("코딩","일본어"),

  "singo": None,

  "code": [

    {"lang": "HTML", "lv": 3},

    {"lang": "CSS", "lv": 4}

  ]

}


# Python → JSON:

y = json.dumps(x, ensure_ascii=False)


# y 타입:  JSON string

print(y)

 

결과값:

{"name": "sinbi", "level": 10, "good": true, "nogood": false, "favorite": ["코딩", "일본어"], "singo": null, "code": [{"lang": "HTML", "lv": 3}, {"lang": "CSS", "lv": 4}]} 

 

결과 포맷 (= 출력 모양 변경) - 들여쓰기, 구분자변경

1. indent 매개변수 : 들여쓰기 (예) 4칸 들여쓰기

json.dumps(x, ensure_ascii=False, indent=4)

 

import json


x = {

  "name": "sinbi",

  "level": 10,

  "good": True,

  "nogood": False,

  "favorite": ("코딩","일본어"),

  "singo": None,

  "code": [

    {"lang": "HTML", "lv": 3},

    {"lang": "CSS", "lv": 4}

  ]

}


# Python → JSON:

y = json.dumps(x, ensure_ascii=False, indent=4)


# y 타입:  JSON string

print(y)

 

결과값:

{

    "name": "sinbi",

    "level": 10,

    "good": true,

    "nogood": false,

    "favorite": [

        "코딩",

        "일본어"

    ],

    "singo": null,

    "code": [

        {

            "lang": "HTML",

            "lv": 3

        },

        {

            "lang": "CSS",

            "lv": 4

        }

    ]

}


2. separators 매개변수 : 구분자 변경.

※ separators = ("요소간구분자", "키값간구분자")

※ 기본값: (", ", ": ") 즉, 쉼표와 콜론 뒤 공백 이용해 구분.

※ 예제:  (". ", " = ") 즉, 마침표와 앞뒤 공백 있는 등호로 구분.

json.dumps(x, ensure_ascii=False, indent=4, separators=(". ", " = "))


import json


x = {

  "name": "sinbi",

  "level": 10,

  "good": True,

  "nogood": False,

  "favorite": ("코딩","일본어"),

  "singo": None,

  "code": [

    {"lang": "HTML", "lv": 3},

    {"lang": "CSS", "lv": 4}

  ]

}


# Python → JSON:

y = json.dumps(x, ensure_ascii=False, indent=4, separators=(". ", " = "))


# y 타입:  JSON string

print(y)

 

결과값:

{

    "name" = "sinbi". 

    "level" = 10. 

    "good" = true. 

    "nogood" = false. 

    "favorite" = [

        "코딩". 

        "일본어"

    ]. 

    "singo" = null. 

    "code" = [

        {

            "lang" = "HTML". 

            "lv" = 3

        }. 

        {

            "lang" = "CSS". 

            "lv" = 4

        }

    ]

}

 

 

결과 정렬 - Key 기준 정렬

sort_keys=True 매개변수 : key 오름차순으로 정렬.

json.dumps(x, ensure_ascii=False, indent=4, separators=(". ", " = "), sort_keys=True)

 

import json


x = {

  "name": "sinbi",

  "level": 10,

  "good": True,

  "nogood": False,

  "favorite": ("코딩","일본어"),

  "singo": None,

  "code": [

    {"lang": "HTML", "lv": 3},

    {"lang": "CSS", "lv": 4}

  ]

}


# Python → JSON:

y = json.dumps(x, ensure_ascii=False, indent=4, separators=(". ", " = "), sort_keys=True)


# y 타입:  JSON string

print(y)


결과값:

{

    "code" = [

        {

            "lang" = "HTML". 

            "lv" = 3

        }. 

        {

            "lang" = "CSS". 

            "lv" = 4

        }

    ]. 

    "favorite" = [

        "코딩". 

        "일본어"

    ]. 

    "good" = true. 

    "level" = 10. 

    "name" = "sinbi". 

    "nogood" = false. 

    "singo" = null

}


 

※ 변수 정의 시와 출력 시의 따옴표 모양에 주의.

Python Dictionay와 JSON String 비교

[예제] (작은따옴표・큰따옴표 Dictionary → JSON) 변환 후 출력.

 

import json

 

a1 = {'name':'홈짱닷컴', 'host':'Homzzang.com', 'open': '2012'}

# 작은따옴표 사용한 Dictionary 정의


a2 = json.dumps(a1, ensure_ascii=False)

# Python Dictionary → JSON String 변환.


b1 = {"name":"홈짱닷컴", "host":"Homzzang.com", "open": "2012"}

# 큰따옴표 사용한 Dictionary 정의


b2 = json.dumps(b1, ensure_ascii=False)

# Python Dictionary → JSON String 변환.

 

 

print(a1) # 작은따옴표 Dictionay 출력

# {'name': '홈짱닷컴', 'host': 'Homzzang.com', 'open': '2012'}

print(type(a1))

<class 'dict'> 

 

print(a2) # JSON String 출력

# {"name": "홈짱닷컴", "host": "Homzzang.com", "open": "2012"}

print(type(a2))

# <class 'str'> 

 

print(b1) # 큰따옴표 Dictionary 출력.

# {'name': '홈짱닷컴', 'host': 'Homzzang.com', 'open': '2012'}

print(type(b1))

# <class 'dict'> 

 

print(b2) # JSON String 출력

# {"name": "홈짱닷컴", "host": "Homzzang.com", "open": "2012"}

print(type(b2))

# <class 'str'>

 


PS.

 

주의1. 

ensure_ascii=False 매개변수가 없으면,

한글 경우 아스키코드로 변환되어 출력됨.

(예)  홈짱닷컴 경우, \ud648\uc9f1\ub2f7\ucef4 형태로 출력.

 

주의2.

Python Dictionary와 JSON String은 비슷하니,

반드시 type() 메서드로 데이터타입 확인 후 작업.

 

 

 

PS. 아주 깊게 공부하실 분만....


json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

 


 

json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

 



분류 제목
basic Python - Lambda (람다함수) - 작은 1회용 익명함수
basic Python - Array (배열)
basic Python - Class/Object (클래스/객체) ※ __init__() 함수
basic Python - Inheritance (상속)
basic Python - Iterator (반복자)
basic Python - Scope (범위)
basic Python - Module (모듈)
basic Python - Datetime (날짜시간) 표시
basic Python - JSON (제이슨)
basic Python - RegEx (정규식) - 정규표현식
basic Python - PIP (피프) - 패키지(모듈) 관리자
basic Python - Try...Except - 에러 테스트/제어. (= 트라이...익세프트)
basic Python - User Input (사용자 입력)
basic Python - String Format (문자열 포맷)
basic Python - Math (수학)
2/2
목록
찾아주셔서 감사합니다. Since 2012