Python

[basic] Python - JSON (제이슨)

1355

목차

  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 - Home (입문) - 이념 / 추천 링크
basic Python - Intro (소개) - 용도・특징
basic Python - Start (시작) - 파이썬 설치/실행/버전확인
basic Python - Syntax (구문) - 들여쓰기・변수・주석
basic Python - Comment (주석)
basic Python - Variable (변수)
basic Python - DataType (데이터타입) - 자료형
basic Python - Number (숫자)
basic Python - Casting (데이터 타입 변경) - 자료형 변환
basic Python - String (문자열) ★ ※ 색인번호 (= 인덱스) 개념.
basic Python - Boolean (참거짓)
basic Python - Operator (연산자)
basic Python - List (리스트) ★ - 변경 가능한 모음
basic Python - Tuple (투플/튜플) - 변경 불가 모음
basic Python - Set (셋/세트) - '순서(=색인)' 없고, 중복 허용 않는 데이터 모음.
1/32
목록
  • 채팅방
  • 필독
1. 채팅창 헤드에서 접속자 확인 2. 닉네임 클릭해 1:1 채팅 가능 3. 닉네임 클릭해 귓속말 가능 4. 닉네임 클릭해 호출하기 가능 5. 우하단 클릭해 환경 설정 가능 6. 의뢰글 작성 후 의뢰 상담 가능 7. 질문글 작성 후 질문 상담 가능 8. 채팅방에 개인정보 입력 금지 9. 채팅방에 광고 욕설 비방 금지
 홈  PC버전 로그인 일본어
웹디자인언어
서버관리언어
고급코딩언어
그누보드
제작의뢰
Q&A
커뮤니티
웹유틸
회원센터
홈짱닷컴 PC버전 로그인