SlideShare a Scribd company logo
PYTHON
JSON
MODULE
2.X
Moon Yong Joon
JSON
기본
Moon Yong Joon
JSON 기본 문장
{ } 문장 : Key와 값이 쌍으로 구성된 문장
[ ] 문장 : 값에 들어갈 수 있는 구조로 {}문장, 다양한 데
이터타입이 들어감
{“키” : 값, “키1”: 값 ……}
[요소1,요소2 ,……]
{ } 문장
[ ] 문장
JSON 값 : data type
파이썬 데이터 타입과 JSON 타입 매핑
JSON 설명 Python
object 순서가 없는 키와 값의 쌍 dict
array 순서가있는 sequece들의 값 list
string 문자열 unicode
number (int) double- precision in JavaScript int, long
number (real) floating-point format in JavaScript float
true Boolean True
false Boolean False
null empty None
DECODING
처리
Moon Yong Joon
decoding
부호화(encoding) 된 것을 다시 원래의 기준으로
전환하는 것
JSON Python
object dict
array list
string unicode
number (int) int, long
number (real) float
true True
false False
null None
json module : load()
json.load() 파라미터
json.load(fp[, encoding[, cls[, object_hook[, parse_float[,
parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
parameter 설명
fp 파일명
encoding utf-8, ascii 인코딩 타입
cls 별도의 사용자 오류시 사용
object_hook
object_hook는 객체 리터럴 디코딩 (DICT)의 결과로 호출되는 선택적 기능입니다.
object_hook의 리턴 값 대신 딕셔너리로 사용된다. 이 기능은 사용자의 디코더 (를 구현하
는데 사용될 수있다.
parse_float Float 처리
parse_int Int 처리
parse_constant '-Infinity', 'Infinity', 'NaN’ 처리
object_pairs_hook
object_pairs_hook 쌍의 정렬 된 목록으로 디코딩 문자 그대로 모든 개체의 결과로 호출되
는 선택적 기능입니다. object_pairs_hook의 리턴 값 대신 딕셔너리로 사용된다. 이 기능
키 및 값 쌍 (예를 들어, collections.OrderedDict ()는 삽입의 순서를 기억한다) 복호화되는
순서에 의존 맞춤 디코더를 구현하기 위해 사용될 수있다. object_hook도 정의되어있는 경
우, object_pairs_hook은 우선합니다.
**kw 별도의 사용자 오류시 사용
기본
스트림을 파일에 저장하고 다시 파이썬 처리를
위한 변환처리
f = open("file_txt1",'w+')
f.write('[{"a": "A", "c": 3.0, "b": [2, 4]}]')
f.flush()
f.seek(0)
print json.load(f)
f.close()
#결과값
[{u'a': u'A', u'c': 3.0, u'b': [2, 4]}]
json module : loads()
json Module : json.loads
json.loads(s[, encoding[, cls[, object_hook[, parse_float[,
parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
parameter 설명
s string
encoding utf-8, ascii 인코딩 타입
cls 별도의 사용자 오류시 사용
object_hook
object_hook는 객체 리터럴 디코딩 (DICT)의 결과로 호출되는 선택적 기능입니다.
object_hook의 리턴 값 대신 딕셔너리로 사용된다. 이 기능은 사용자의 디코더 (를 구현하
는데 사용될 수있다.
parse_float Float 처리
parse_int Int 처리
parse_constant '-Infinity', 'Infinity', 'NaN’ 처리
object_pairs_hook 객체 변환을 위한 함수 변환 연결
**kw 별도의 사용자 오류시 사용
기본
Json 형태의 스트링을 파이썬 타입으로 변환
#json --> python decoding
obj_jl = u'{"answer": [42.2], "abs": 42}'
obj_pl = json.loads(obj_jl)
print("decoding",obj_pl)
#결과값
('decoding', {u'answer': [42.2], u'abs': 42})
obejct_hook 처리 방식
obejct_hook 파라미터에 변환함수를 지정하고
변환하는 객체의 값을 처리
# obejct_hook 에 처리할 함수 정의
def obejct_hook _processing(obj) :
#obj를 전환
convert_obj = 처리로직
return convert_obj
json.loads(encoded_object, object_hook= obejct_hook _processing)
#json_myobj.py
class MyObj(object):
def __init__(self, s):
self.s = s
def __repr__(self):
return '<MyObj(%s)>' % self.s
encoded_object = '[{"s": "instance value goes here", "__module__": "json_myobj", "__class__": "MyObj"}]'
obejct_hook : 클래스 생성
JSON에 넘겨진 클래스 객체에 대해 생성
#json_myobj.py
class MyObj(object):
def __init__(self, s):
self.s = s
def __repr__(self):
return '<MyObj(%s)>' % self.s
obejct_hook : 함수 생성
Object_hook에 클래스 객체와 연결될 함수를 생
성
#json.obj.py
import json
def dict_to_object(d):
if '__class__' in d:
class_name = d.pop('__class__')
module_name = d.pop('__module__')
module = __import__(module_name)
#클래스 타입을 넣고
class_ = getattr(module, class_name)
print 'CLASS:', class_
#클래스 아키먼트를 가져오고
kargs = dict( (key, value) for key, value in d.items())
print 'INSTANCE ARGS:', args
#instance 생성
inst = class_(**kargs)
else:
inst = d
return inst
1. 변수 = 클래스타입을 할당
2. 변수(파라미터)에 키와 값을 가지는
파라미터를 전달시 변수명 앞예 **
를 붙이고 실행
함수 파리미터 d 에 전단됨
{"s": "instance value goes here",
"__module__": "json_myobj",
"__class__": "MyObj"}
obejct_hook : 실행
실행해서 인스턴스를 변수에 할당
#json.obj.py
# json 데이터
encoded_object = '[{"s": "instance value goes here", "__module__": "json_myobj", "__class__": "MyObj"}]‘
#json 데이터를 변환해서 인스턴스로 전환
myobj_instance = json.loads(encoded_object, object_hook=dict_to_object)
print type(myobj_instance), myobj_instance[0].__dict__
#결과값
CLASS: <class 'json_myobj.MyObj'>
INSTANCE ARGS: {u's': u'instance value goes here'}
<type 'list'> {'s': u'instance value goes here'}
obejct_hook 이용한 encoding
Unicode 처리를 함수를 이용하여 ascii 처리로 전환
#object_hook 용 함수 처리
def ascii_encode_dict(data):
ascii_encode = lambda x: x.encode('ascii')
return dict(map(ascii_encode, pair) for pair in data.items())
#json data
json_data = '{"foo": "bar", "bar": "baz"}‘
#python 스타일로 변환  unicode
print json.loads(json_data)
#python 스타일로 변환  Ascii
print json.loads(json_data, object_hook=ascii_encode_dict)
#결과값
{u'foo': u'bar', u'bar': u'baz'}
{'foo': 'bar', 'bar': 'baz'}
json module : JSONDecorder
JSONDecoder 클래스 사용
Json. JSONDecoder를 이용해서 JSON 형태의 스
트링을 파이썬 타입으로 변환
from json import JSONDecoder
#인스턴스 객체 생성
jd = JSONDecoder()
#메소드에 JSON 타입 전달
jd_p = jd.decode("""{ "a":"b" }""")
print(type(jd_p),jd.decode("""{ "a":"b" }"""))
#dumps()함수를 사용해서 decoding
print(type(json.loads("""{ "a":"b" }""")), json.loads("""{ "a":"b" }"""))
#결과값
(<type 'dict'>, {u'a': u'b'})
(<type 'dict'>, {u'a': u'b'})
ENCODING
처리
Moon Yong Joon
encoding
부호화(encoding)되지 않을 것을 특정 기준에 따
라 전환하는 것
Python JSON
dict object
list, tuple array
str, unicode string
int, long, float number
True true
False false
None null
json module : dump()
json.dump 파라미터
json.dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True,
allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8",
default=None, sort_keys=False, **kw)
parameter 설명
obj Python 스타일 객체
fp 파일명
skipkeys=False basic type (str, unicode, int, long, float, bool, None) 이 아닐 경우 오류처리
ensure_ascii=True Ascii /unicode 처리 방식
check_circular=True
거짓 인 경우, 컨테이너 유형에 대한 순환 참조 검사가 생략되며 순환 참조는 오버플로 오류
처리
allow_nan=True (nan, inf, -inf) 처리를 위해 사용
cls=None 별도의 사용자 오류시 사용
indent=None 출력하는 것에 대한 인텐트 처리
separators=None,
(item_separator, dict_separator) tuple default (', ', ': ') separators이며 공백을 제거할
경우 (',', ':') 사용
encoding="utf-8 인코딩 타입
default=None 변환함수 입력
sort_keys=False True 일 경우 sort 처리
**kw 별도의 사용자 오류시 사용
기본
스트림처리를 위해 file을 사용해서 처리하고 저
장해서 처리
import json
data = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ]
f = open("file_txt",'w')
json.dump(data, f)
f.flush()
print open(f.name, 'r').read()
#결과값
[{"a": "A", "c": 3.0, "b": [2, 4]}]
json module : dumps()
json.dumps
json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True,
allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8",
default=None, sort_keys=False, **kw)
parameter 설명
obj Python 스타일 객체
skipkeys=False basic type (str, unicode, int, long, float, bool, None) 이 아닐 경우 오류처리
ensure_ascii=True Ascii 처리 방식
check_circular=True
거짓 인 경우, 컨테이너 유형에 대한 순환 참조 검사가 생략되며 순환 참조는 오버플로 오류
처리
allow_nan=True (nan, inf, -inf) 처리를 위해 사용
cls=None 별도의 사용자 오류시 사용
indent=None 출력하는 것에 대한 인텐트 처리
separators=None,
(item_separator, dict_separator) tuple default (', ', ': ') separators이며 공백을 제거할
경우 (',', ':') 사용
encoding="utf-8” 인코딩 타입
default=None 변환함수 입력
sort_keys=False True 일 경우 sort 처리
**kw 별도의 사용자 오류시 사용
기본
파이썬 타입을 json 스트링으로 변환
#python --> json encoding
obj_pd = {u"answer": [42.2], u"abs": 42}
obj_jd = json.dumps(obj_pd)
print("encoding ",type(obj_jd), obj_jd)
#결과값
('encoding ', <type 'str'>, '{"answer":
[42.2], "abs": 42}')
tuple ->list
Tuple 타입은 JSON에 존재하지 않아서 list 타입
으로 전환되어 버림
#원소중에 dict 을 가지는 리스트 생성
data = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ]
print 'DATA:', type(data), data
print 'DATA repr:', type(repr(data)), repr(data)
#json 으로 전환
data_string = json.dumps(data)
print 'JSON:', data_string
#decoding 해도 리스트로 남는다
print "Data ",json.loads(data_string)
#결과값
DATA: <type 'list'> [{'a': 'A', 'c': 3.0, 'b': (2, 4)}]
DATA repr: <type 'str'> [{'a': 'A', 'c': 3.0, 'b': (2, 4)}]
JSON: [{"a": "A", "c": 3.0, "b": [2, 4]}]
Data [{u'a': u'A', u'c': 3.0, u'b': [2, 4]}]
ensure_ascii 처리
Ensure_ascii=False 일 경우 Unicode 타입는
unicode 데이터 타입으로 전환
print type(json.dumps({'a':u'b'},
ensure_ascii=True)) # <type 'str'>
print json.dumps({'a':u'b'}, ensure_ascii=True)
print type(json.dumps({'a':'b'},
ensure_ascii=False)) # <type 'str'>
print json.dumps({'a':'b'}, ensure_ascii=False)
print type(json.dumps({'a':u'b'},
ensure_ascii=False)) #<type 'unicode'>
print json.dumps({'a':u'b'}, ensure_ascii=False)
#결과값
<type 'str'>
{"a": "b"}
<type 'str'>
{"a": "b"}
<type 'unicode'>
{"a": "b"}
sort_keys처리
파이썬 타입을 sort_keys 에 맞춰 json 스트링으
로 변환
data = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ]
print 'DATA:', repr(data)
unsorted = json.dumps(data)
print 'JSON:', json.dumps(data)
print 'SORT:', json.dumps(data, sort_keys=True)
first = json.dumps(data, sort_keys=True)
second = json.dumps(data, sort_keys=True)
print 'UNSORTED MATCH:', unsorted == first
print 'SORTED MATCH :', first == second
#결과값
DATA: [{'a': 'A', 'c': 3.0, 'b': (2, 4)}]
JSON: [{"a": "A", "c": 3.0, "b": [2, 4]}]
SORT: [{"a": "A", "b": [2, 4], "c": 3.0}]
UNSORTED MATCH: False
SORTED MATCH : True
intent처리
파이썬 타입을intent에 맞춰 json 스트링으로 변
환
#intent를 주어 보기좋게 하기
obj = {u"answer": [42.2], u"abs": 42}
print(repr(json.dumps(obj, indent=4)))
print(json.dumps(obj, indent=4)))
#결과값
'{n "answer": [n 42.2n ], n
"abs": 42n}'
{
"answer": [
42.2
],
"abs": 42
}
separators 처리
파이썬 타입을 separators 에 맞춰 json 스트
링으로 변환  separatros에 blank가 없으므로
blank가 제거됨
data = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ]
print 'DATA:', repr(data)
print 'repr(data) :', repr(data)
print 'dumps(data) :', json.dumps(data), len(json.dumps(data))
print 'dumps(data, separators):', json.dumps(data, separators=(',',':')),len(json.dumps(data, separators=(',',':')))
#결과값
repr(data) : [{'a': 'A', 'c': 3.0, 'b': (2, 4)}]
dumps(data) : [{"a": "A", "c": 3.0, "b": [2, 4]}] 35
dumps(data, separators): [{"a":"A","c":3.0,"b":[2,4]}] 29
default 처리 흐름
Default 파라미터에는 변환함수를 지정하여 파이
썬에서 Json으로 전환될 수 있는 형태 처리 한 후
에 dumps함수가 실행
# default에 처리할 함수 정의
def default_processing(obj) :
#obj를 전환
convert_obj = 처리로직
return convert_obj
Json.dumps(obj, default=default_processing)
# 부호화 대상 파이썬 객체
obj = 파이썬 객체
default : 사용자정의 객체1
파이썬 타입 중 인스턴스를 default에 변환 함수
를 지정해서 json 스트링으로 변환
# 파이썬 클래스 생성
class User(object):
def __init__(self, name, password):
self.name = name
self.password = password
#파이썬 인스턴스 생성
alice = User('Alice A. Adams', 'secret')
#인스턴스 내의 속성만 전환 매소드
def jdefault(o):
return o.__dict__
# Json으로 변환
print(json.dumps(alice, default=jdefault))
#결과값
{"password": "secret", "name": "Alice A.
Adams"}
default : 사용자정의 객체 2
파이썬 타입 중 인스턴스를 default에 변환 함수
를 지정해서 json 스트링으로 변환
import json
class MyObj(object):
def __init__(self, s):
self.s = s
def __repr__(self):
return '<MyObj(%s)>' % self.s
obj = MyObj('instance value goes here')
def convert_to_builtin_type(obj):
print 'default(', repr(obj), ')'
# Convert objects to a dictionary of their representation
d = { '__class__':obj.__class__.__name__,
'__module__':obj.__module__,
}
d.update(obj.__dict__)
return d
#결과값
{"s": "instance value goes here",
"__module__": "__main__", "__class__":
"MyObj"}
print json.dumps(obj,
default=convert_to_builtin_type)
default : set type변환
파이썬 타입 중 set을 default에 변환 함수를 지
정해서 json 스트링으로 변환
# set 타입을 리스트로 전환
def jdefault_set(o):
if isinstance(o, set):
return list(o)
return o.__dict__
pets = set([u'Tiger', u'Panther', u'Toad'])
pets_js = json.dumps(pets, default=jdefault_set)
print( type(pets_js),json.dumps(pets, default=jdefault_set))) #결과값
(<type 'str'>, '["Tiger",
"Toad", "Panther"]')
json module : JSONEecorder
Encode/iterencode
파이썬에서 JSON으로 부호화, iterable 처리가
필요할 경우 iterencode를 사용
import json
encoder = json.JSONEncoder()
data = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ]
print encoder.encode(data)
for part in encoder.iterencode(data):
print 'PART:', part
#결과값
[{"a": "A", "c": 3.0, "b": [2, 4]}]
PART: [
PART: {
PART: "a"
PART: :
PART: "A"
PART: ,
PART: "c"
PART: :
PART: 3.0
PART: ,
PART: "b"
PART: :
PART: [2
PART: , 4
PART: ]
PART: }
PART: ]

More Related Content

What's hot

파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229Yong Joon Moon
 
Reflect package 사용하기
Reflect package 사용하기Reflect package 사용하기
Reflect package 사용하기Yong Joon Moon
 
파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304Yong Joon Moon
 
파이썬+객체지향+이해하기 20160131
파이썬+객체지향+이해하기 20160131파이썬+객체지향+이해하기 20160131
파이썬+객체지향+이해하기 20160131Yong Joon Moon
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 Yong Joon Moon
 
엘라스틱서치 이해하기 20160613
엘라스틱서치 이해하기 20160613엘라스틱서치 이해하기 20160613
엘라스틱서치 이해하기 20160613Yong Joon Moon
 
파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 Yong Joon Moon
 
파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403Yong Joon Moon
 
파이썬 문자열 이해하기
파이썬 문자열 이해하기파이썬 문자열 이해하기
파이썬 문자열 이해하기Yong Joon Moon
 
파이썬 class 및 function namespace 이해하기
파이썬 class 및 function namespace 이해하기파이썬 class 및 function namespace 이해하기
파이썬 class 및 function namespace 이해하기Yong Joon Moon
 
텐서플로우 기초 이해하기
텐서플로우 기초 이해하기 텐서플로우 기초 이해하기
텐서플로우 기초 이해하기 Yong Joon Moon
 
파이썬 Collections 모듈 이해하기
파이썬 Collections 모듈 이해하기파이썬 Collections 모듈 이해하기
파이썬 Collections 모듈 이해하기Yong Joon Moon
 
파이썬 함수 이해하기
파이썬 함수 이해하기 파이썬 함수 이해하기
파이썬 함수 이해하기 Yong Joon Moon
 
파이썬 xml 이해하기
파이썬 xml 이해하기파이썬 xml 이해하기
파이썬 xml 이해하기Yong Joon Moon
 
파이썬 프로퍼티 디스크립터 이해하기
파이썬 프로퍼티 디스크립터 이해하기파이썬 프로퍼티 디스크립터 이해하기
파이썬 프로퍼티 디스크립터 이해하기Yong Joon Moon
 
파이썬 파일처리 이해하기
파이썬 파일처리 이해하기파이썬 파일처리 이해하기
파이썬 파일처리 이해하기Yong Joon Moon
 
Python 이해하기 20160815
Python 이해하기 20160815Python 이해하기 20160815
Python 이해하기 20160815Yong Joon Moon
 
Python+numpy pandas 4편
Python+numpy pandas 4편Python+numpy pandas 4편
Python+numpy pandas 4편Yong Joon Moon
 
엘라스틱서치 분석 이해하기 20160623
엘라스틱서치 분석 이해하기 20160623엘라스틱서치 분석 이해하기 20160623
엘라스틱서치 분석 이해하기 20160623Yong Joon Moon
 

What's hot (20)

파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229
 
Reflect package 사용하기
Reflect package 사용하기Reflect package 사용하기
Reflect package 사용하기
 
파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304
 
파이썬+객체지향+이해하기 20160131
파이썬+객체지향+이해하기 20160131파이썬+객체지향+이해하기 20160131
파이썬+객체지향+이해하기 20160131
 
파이썬 심화
파이썬 심화파이썬 심화
파이썬 심화
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기
 
엘라스틱서치 이해하기 20160613
엘라스틱서치 이해하기 20160613엘라스틱서치 이해하기 20160613
엘라스틱서치 이해하기 20160613
 
파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기
 
파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403
 
파이썬 문자열 이해하기
파이썬 문자열 이해하기파이썬 문자열 이해하기
파이썬 문자열 이해하기
 
파이썬 class 및 function namespace 이해하기
파이썬 class 및 function namespace 이해하기파이썬 class 및 function namespace 이해하기
파이썬 class 및 function namespace 이해하기
 
텐서플로우 기초 이해하기
텐서플로우 기초 이해하기 텐서플로우 기초 이해하기
텐서플로우 기초 이해하기
 
파이썬 Collections 모듈 이해하기
파이썬 Collections 모듈 이해하기파이썬 Collections 모듈 이해하기
파이썬 Collections 모듈 이해하기
 
파이썬 함수 이해하기
파이썬 함수 이해하기 파이썬 함수 이해하기
파이썬 함수 이해하기
 
파이썬 xml 이해하기
파이썬 xml 이해하기파이썬 xml 이해하기
파이썬 xml 이해하기
 
파이썬 프로퍼티 디스크립터 이해하기
파이썬 프로퍼티 디스크립터 이해하기파이썬 프로퍼티 디스크립터 이해하기
파이썬 프로퍼티 디스크립터 이해하기
 
파이썬 파일처리 이해하기
파이썬 파일처리 이해하기파이썬 파일처리 이해하기
파이썬 파일처리 이해하기
 
Python 이해하기 20160815
Python 이해하기 20160815Python 이해하기 20160815
Python 이해하기 20160815
 
Python+numpy pandas 4편
Python+numpy pandas 4편Python+numpy pandas 4편
Python+numpy pandas 4편
 
엘라스틱서치 분석 이해하기 20160623
엘라스틱서치 분석 이해하기 20160623엘라스틱서치 분석 이해하기 20160623
엘라스틱서치 분석 이해하기 20160623
 

Viewers also liked

파이썬 반복자 생성자 이해하기
파이썬 반복자 생성자 이해하기파이썬 반복자 생성자 이해하기
파이썬 반복자 생성자 이해하기Yong Joon Moon
 
파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310Yong Joon Moon
 
파이썬+네트워크 20160210
파이썬+네트워크 20160210파이썬+네트워크 20160210
파이썬+네트워크 20160210Yong Joon Moon
 
파이썬 Datetime 이해하기
파이썬 Datetime 이해하기파이썬 Datetime 이해하기
파이썬 Datetime 이해하기Yong Joon Moon
 
파이썬 기초
파이썬 기초 파이썬 기초
파이썬 기초 Yong Joon Moon
 
파이썬 객체 클래스 이해하기
파이썬  객체 클래스 이해하기파이썬  객체 클래스 이해하기
파이썬 객체 클래스 이해하기Yong Joon Moon
 
파이썬+정규표현식+이해하기 20160301
파이썬+정규표현식+이해하기 20160301파이썬+정규표현식+이해하기 20160301
파이썬+정규표현식+이해하기 20160301Yong Joon Moon
 
파이썬 class 및 인스턴스 생성 이해하기
파이썬 class 및 인스턴스 생성 이해하기파이썬 class 및 인스턴스 생성 이해하기
파이썬 class 및 인스턴스 생성 이해하기Yong Joon Moon
 
파이썬 문자열 이해하기
파이썬 문자열 이해하기파이썬 문자열 이해하기
파이썬 문자열 이해하기Yong Joon Moon
 
파이썬 sqlite 이해하기
파이썬 sqlite 이해하기파이썬 sqlite 이해하기
파이썬 sqlite 이해하기Yong Joon Moon
 
FLTK Summer Course - Part VIII - Eighth Impact
FLTK Summer Course - Part VIII - Eighth ImpactFLTK Summer Course - Part VIII - Eighth Impact
FLTK Summer Course - Part VIII - Eighth ImpactMichel Alves
 
Introduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsIntroduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsCarl Brown
 
Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2Anil Sagar
 
TMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsTMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsMichel Alves
 
"Git Hooked!" Using Git hooks to improve your software development process
"Git Hooked!" Using Git hooks to improve your software development process"Git Hooked!" Using Git hooks to improve your software development process
"Git Hooked!" Using Git hooks to improve your software development processPolished Geek LLC
 
FLTK Summer Course - Part III - Third Impact
FLTK Summer Course - Part III - Third ImpactFLTK Summer Course - Part III - Third Impact
FLTK Summer Course - Part III - Third ImpactMichel Alves
 
Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)Peter Kofler
 
Manipulating file in Python
Manipulating file in PythonManipulating file in Python
Manipulating file in Pythonshoukatali500
 
Servicios web con Python
Servicios web con PythonServicios web con Python
Servicios web con PythonManuel Pérez
 

Viewers also liked (20)

파이썬 반복자 생성자 이해하기
파이썬 반복자 생성자 이해하기파이썬 반복자 생성자 이해하기
파이썬 반복자 생성자 이해하기
 
파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310
 
파이썬+네트워크 20160210
파이썬+네트워크 20160210파이썬+네트워크 20160210
파이썬+네트워크 20160210
 
파이썬 Datetime 이해하기
파이썬 Datetime 이해하기파이썬 Datetime 이해하기
파이썬 Datetime 이해하기
 
파이썬 기초
파이썬 기초 파이썬 기초
파이썬 기초
 
파이썬 객체 클래스 이해하기
파이썬  객체 클래스 이해하기파이썬  객체 클래스 이해하기
파이썬 객체 클래스 이해하기
 
파이썬+정규표현식+이해하기 20160301
파이썬+정규표현식+이해하기 20160301파이썬+정규표현식+이해하기 20160301
파이썬+정규표현식+이해하기 20160301
 
파이썬 class 및 인스턴스 생성 이해하기
파이썬 class 및 인스턴스 생성 이해하기파이썬 class 및 인스턴스 생성 이해하기
파이썬 class 및 인스턴스 생성 이해하기
 
파이썬 문자열 이해하기
파이썬 문자열 이해하기파이썬 문자열 이해하기
파이썬 문자열 이해하기
 
파이썬 sqlite 이해하기
파이썬 sqlite 이해하기파이썬 sqlite 이해하기
파이썬 sqlite 이해하기
 
FLTK Summer Course - Part VIII - Eighth Impact
FLTK Summer Course - Part VIII - Eighth ImpactFLTK Summer Course - Part VIII - Eighth Impact
FLTK Summer Course - Part VIII - Eighth Impact
 
Introduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsIntroduction to Git Commands and Concepts
Introduction to Git Commands and Concepts
 
Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2
 
TMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsTMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and Reports
 
"Git Hooked!" Using Git hooks to improve your software development process
"Git Hooked!" Using Git hooks to improve your software development process"Git Hooked!" Using Git hooks to improve your software development process
"Git Hooked!" Using Git hooks to improve your software development process
 
Advanced Git
Advanced GitAdvanced Git
Advanced Git
 
FLTK Summer Course - Part III - Third Impact
FLTK Summer Course - Part III - Third ImpactFLTK Summer Course - Part III - Third Impact
FLTK Summer Course - Part III - Third Impact
 
Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)
 
Manipulating file in Python
Manipulating file in PythonManipulating file in Python
Manipulating file in Python
 
Servicios web con Python
Servicios web con PythonServicios web con Python
Servicios web con Python
 

Similar to 파이썬+Json+이해하기 20160301

Hacosa js study 2주차
Hacosa js study 2주차Hacosa js study 2주차
Hacosa js study 2주차Seong Bong Ji
 
Python machine learning Ch.4
Python machine learning Ch.4Python machine learning Ch.4
Python machine learning Ch.4PartPrime
 
Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체Circulus
 
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작Taeyoung Kim
 
Ajax 기술문서 - 김연수
Ajax 기술문서 - 김연수Ajax 기술문서 - 김연수
Ajax 기술문서 - 김연수Yeon Soo Kim
 
Java advancd ed10
Java advancd ed10Java advancd ed10
Java advancd ed10hungrok
 
빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)SeongHyun Ahn
 
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Circulus
 
kotlinx.serialization
kotlinx.serializationkotlinx.serialization
kotlinx.serializationArawn Park
 
C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)
C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)
C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)혜웅 박
 
포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++KWANGIL KIM
 
Javascript개발자의 눈으로 python 들여다보기
Javascript개발자의 눈으로 python 들여다보기Javascript개발자의 눈으로 python 들여다보기
Javascript개발자의 눈으로 python 들여다보기지수 윤
 
Es2015 Simple Overview
Es2015 Simple OverviewEs2015 Simple Overview
Es2015 Simple OverviewKim Hunmin
 
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613KTH, 케이티하이텔
 
Item10. toString 메소드는 항상 오버라이드 하자
Item10. toString 메소드는 항상 오버라이드  하자Item10. toString 메소드는 항상 오버라이드  하자
Item10. toString 메소드는 항상 오버라이드 하자Sungho Moon
 

Similar to 파이썬+Json+이해하기 20160301 (20)

Abc
AbcAbc
Abc
 
JSON with C++ & C#
JSON with C++ & C#JSON with C++ & C#
JSON with C++ & C#
 
Hacosa js study 2주차
Hacosa js study 2주차Hacosa js study 2주차
Hacosa js study 2주차
 
Python machine learning Ch.4
Python machine learning Ch.4Python machine learning Ch.4
Python machine learning Ch.4
 
Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체
 
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
 
Ajax 기술문서 - 김연수
Ajax 기술문서 - 김연수Ajax 기술문서 - 김연수
Ajax 기술문서 - 김연수
 
Java advancd ed10
Java advancd ed10Java advancd ed10
Java advancd ed10
 
Rapid json tutorial
Rapid json tutorialRapid json tutorial
Rapid json tutorial
 
빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)
 
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
 
kotlinx.serialization
kotlinx.serializationkotlinx.serialization
kotlinx.serialization
 
C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)
C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)
C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)
 
포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++
 
강의자료3
강의자료3강의자료3
강의자료3
 
Javascript개발자의 눈으로 python 들여다보기
Javascript개발자의 눈으로 python 들여다보기Javascript개발자의 눈으로 python 들여다보기
Javascript개발자의 눈으로 python 들여다보기
 
Es2015 Simple Overview
Es2015 Simple OverviewEs2015 Simple Overview
Es2015 Simple Overview
 
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613
 
Javascript
JavascriptJavascript
Javascript
 
Item10. toString 메소드는 항상 오버라이드 하자
Item10. toString 메소드는 항상 오버라이드  하자Item10. toString 메소드는 항상 오버라이드  하자
Item10. toString 메소드는 항상 오버라이드 하자
 

More from Yong Joon Moon

Scala companion object
Scala companion objectScala companion object
Scala companion objectYong Joon Moon
 
Scala block expression
Scala block expressionScala block expression
Scala block expressionYong Joon Moon
 
Scala self type inheritance
Scala self type inheritanceScala self type inheritance
Scala self type inheritanceYong Joon Moon
 
Scala type class pattern
Scala type class patternScala type class pattern
Scala type class patternYong Joon Moon
 
Scala nested function generic function
Scala nested function generic functionScala nested function generic function
Scala nested function generic functionYong Joon Moon
 
스칼라 클래스 이해하기 _Scala class understanding
스칼라 클래스 이해하기 _Scala class understanding스칼라 클래스 이해하기 _Scala class understanding
스칼라 클래스 이해하기 _Scala class understandingYong Joon Moon
 
파이썬 내부 데이터 검색 방법
파이썬 내부 데이터 검색 방법파이썬 내부 데이터 검색 방법
파이썬 내부 데이터 검색 방법Yong Joon Moon
 
파이썬 Xml 이해하기
파이썬 Xml 이해하기파이썬 Xml 이해하기
파이썬 Xml 이해하기Yong Joon Moon
 
파이썬 엑셀_csv 처리하기
파이썬 엑셀_csv 처리하기파이썬 엑셀_csv 처리하기
파이썬 엑셀_csv 처리하기Yong Joon Moon
 
파이썬 Special method 이해하기
파이썬 Special method 이해하기파이썬 Special method 이해하기
파이썬 Special method 이해하기Yong Joon Moon
 
Python+numpy pandas 3편
Python+numpy pandas 3편Python+numpy pandas 3편
Python+numpy pandas 3편Yong Joon Moon
 

More from Yong Joon Moon (20)

rust ownership
rust ownership rust ownership
rust ownership
 
Scala namespace scope
Scala namespace scopeScala namespace scope
Scala namespace scope
 
Scala companion object
Scala companion objectScala companion object
Scala companion object
 
Scala block expression
Scala block expressionScala block expression
Scala block expression
 
Scala self type inheritance
Scala self type inheritanceScala self type inheritance
Scala self type inheritance
 
Scala variable
Scala variableScala variable
Scala variable
 
Scala type class pattern
Scala type class patternScala type class pattern
Scala type class pattern
 
Scala match pattern
Scala match patternScala match pattern
Scala match pattern
 
Scala implicit
Scala implicitScala implicit
Scala implicit
 
Scala type args
Scala type argsScala type args
Scala type args
 
Scala trait usage
Scala trait usageScala trait usage
Scala trait usage
 
Scala nested function generic function
Scala nested function generic functionScala nested function generic function
Scala nested function generic function
 
Scala dir processing
Scala dir processingScala dir processing
Scala dir processing
 
Scala syntax function
Scala syntax functionScala syntax function
Scala syntax function
 
스칼라 클래스 이해하기 _Scala class understanding
스칼라 클래스 이해하기 _Scala class understanding스칼라 클래스 이해하기 _Scala class understanding
스칼라 클래스 이해하기 _Scala class understanding
 
파이썬 내부 데이터 검색 방법
파이썬 내부 데이터 검색 방법파이썬 내부 데이터 검색 방법
파이썬 내부 데이터 검색 방법
 
파이썬 Xml 이해하기
파이썬 Xml 이해하기파이썬 Xml 이해하기
파이썬 Xml 이해하기
 
파이썬 엑셀_csv 처리하기
파이썬 엑셀_csv 처리하기파이썬 엑셀_csv 처리하기
파이썬 엑셀_csv 처리하기
 
파이썬 Special method 이해하기
파이썬 Special method 이해하기파이썬 Special method 이해하기
파이썬 Special method 이해하기
 
Python+numpy pandas 3편
Python+numpy pandas 3편Python+numpy pandas 3편
Python+numpy pandas 3편
 

Recently uploaded

인천대학교 컴퓨터공학과 아틀란티스 졸업작품 commINUty PPT
인천대학교 컴퓨터공학과 아틀란티스 졸업작품 commINUty PPT인천대학교 컴퓨터공학과 아틀란티스 졸업작품 commINUty PPT
인천대학교 컴퓨터공학과 아틀란티스 졸업작품 commINUty PPTpcupcu20831004
 
암호화 보안USB & 외장하드 중앙관리 솔루션 ‘DataLocker SafeConsole’_DATASHEET
암호화 보안USB & 외장하드 중앙관리 솔루션 ‘DataLocker SafeConsole’_DATASHEET암호화 보안USB & 외장하드 중앙관리 솔루션 ‘DataLocker SafeConsole’_DATASHEET
암호화 보안USB & 외장하드 중앙관리 솔루션 ‘DataLocker SafeConsole’_DATASHEETSoftwide Security
 
(독서광) 대격변 AI 시대, 데이터로 사고하고 데이터로 리드하라
(독서광) 대격변 AI 시대,   데이터로 사고하고   데이터로 리드하라(독서광) 대격변 AI 시대,   데이터로 사고하고   데이터로 리드하라
(독서광) 대격변 AI 시대, 데이터로 사고하고 데이터로 리드하라Jay Park
 
인천대학교 캡스톤디자인(2) Pencil me 프레젠테이션 발표자료 파일
인천대학교 캡스톤디자인(2) Pencil me 프레젠테이션 발표자료 파일인천대학교 캡스톤디자인(2) Pencil me 프레젠테이션 발표자료 파일
인천대학교 캡스톤디자인(2) Pencil me 프레젠테이션 발표자료 파일justuser0129
 
INU Graduation Powerpoint-Rabbit FootPrint
INU Graduation Powerpoint-Rabbit FootPrintINU Graduation Powerpoint-Rabbit FootPrint
INU Graduation Powerpoint-Rabbit FootPrintahghwo99
 
캡스톤-디자인-최종-발표-(대상혁) 24년도 졸업작품발표회 ppt.pptx
캡스톤-디자인-최종-발표-(대상혁) 24년도 졸업작품발표회 ppt.pptx캡스톤-디자인-최종-발표-(대상혁) 24년도 졸업작품발표회 ppt.pptx
캡스톤-디자인-최종-발표-(대상혁) 24년도 졸업작품발표회 ppt.pptxcho9759
 
2024년 5월 27일 개발자 이야기 - AWS 람다의 내부 동작 방식 외
2024년 5월 27일 개발자 이야기 - AWS 람다의 내부 동작 방식 외2024년 5월 27일 개발자 이야기 - AWS 람다의 내부 동작 방식 외
2024년 5월 27일 개발자 이야기 - AWS 람다의 내부 동작 방식 외Jay Park
 

Recently uploaded (7)

인천대학교 컴퓨터공학과 아틀란티스 졸업작품 commINUty PPT
인천대학교 컴퓨터공학과 아틀란티스 졸업작품 commINUty PPT인천대학교 컴퓨터공학과 아틀란티스 졸업작품 commINUty PPT
인천대학교 컴퓨터공학과 아틀란티스 졸업작품 commINUty PPT
 
암호화 보안USB & 외장하드 중앙관리 솔루션 ‘DataLocker SafeConsole’_DATASHEET
암호화 보안USB & 외장하드 중앙관리 솔루션 ‘DataLocker SafeConsole’_DATASHEET암호화 보안USB & 외장하드 중앙관리 솔루션 ‘DataLocker SafeConsole’_DATASHEET
암호화 보안USB & 외장하드 중앙관리 솔루션 ‘DataLocker SafeConsole’_DATASHEET
 
(독서광) 대격변 AI 시대, 데이터로 사고하고 데이터로 리드하라
(독서광) 대격변 AI 시대,   데이터로 사고하고   데이터로 리드하라(독서광) 대격변 AI 시대,   데이터로 사고하고   데이터로 리드하라
(독서광) 대격변 AI 시대, 데이터로 사고하고 데이터로 리드하라
 
인천대학교 캡스톤디자인(2) Pencil me 프레젠테이션 발표자료 파일
인천대학교 캡스톤디자인(2) Pencil me 프레젠테이션 발표자료 파일인천대학교 캡스톤디자인(2) Pencil me 프레젠테이션 발표자료 파일
인천대학교 캡스톤디자인(2) Pencil me 프레젠테이션 발표자료 파일
 
INU Graduation Powerpoint-Rabbit FootPrint
INU Graduation Powerpoint-Rabbit FootPrintINU Graduation Powerpoint-Rabbit FootPrint
INU Graduation Powerpoint-Rabbit FootPrint
 
캡스톤-디자인-최종-발표-(대상혁) 24년도 졸업작품발표회 ppt.pptx
캡스톤-디자인-최종-발표-(대상혁) 24년도 졸업작품발표회 ppt.pptx캡스톤-디자인-최종-발표-(대상혁) 24년도 졸업작품발표회 ppt.pptx
캡스톤-디자인-최종-발표-(대상혁) 24년도 졸업작품발표회 ppt.pptx
 
2024년 5월 27일 개발자 이야기 - AWS 람다의 내부 동작 방식 외
2024년 5월 27일 개발자 이야기 - AWS 람다의 내부 동작 방식 외2024년 5월 27일 개발자 이야기 - AWS 람다의 내부 동작 방식 외
2024년 5월 27일 개발자 이야기 - AWS 람다의 내부 동작 방식 외
 

파이썬+Json+이해하기 20160301

  • 3. JSON 기본 문장 { } 문장 : Key와 값이 쌍으로 구성된 문장 [ ] 문장 : 값에 들어갈 수 있는 구조로 {}문장, 다양한 데 이터타입이 들어감 {“키” : 값, “키1”: 값 ……} [요소1,요소2 ,……] { } 문장 [ ] 문장
  • 4. JSON 값 : data type 파이썬 데이터 타입과 JSON 타입 매핑 JSON 설명 Python object 순서가 없는 키와 값의 쌍 dict array 순서가있는 sequece들의 값 list string 문자열 unicode number (int) double- precision in JavaScript int, long number (real) floating-point format in JavaScript float true Boolean True false Boolean False null empty None
  • 6. decoding 부호화(encoding) 된 것을 다시 원래의 기준으로 전환하는 것 JSON Python object dict array list string unicode number (int) int, long number (real) float true True false False null None
  • 7. json module : load()
  • 8. json.load() 파라미터 json.load(fp[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]]) parameter 설명 fp 파일명 encoding utf-8, ascii 인코딩 타입 cls 별도의 사용자 오류시 사용 object_hook object_hook는 객체 리터럴 디코딩 (DICT)의 결과로 호출되는 선택적 기능입니다. object_hook의 리턴 값 대신 딕셔너리로 사용된다. 이 기능은 사용자의 디코더 (를 구현하 는데 사용될 수있다. parse_float Float 처리 parse_int Int 처리 parse_constant '-Infinity', 'Infinity', 'NaN’ 처리 object_pairs_hook object_pairs_hook 쌍의 정렬 된 목록으로 디코딩 문자 그대로 모든 개체의 결과로 호출되 는 선택적 기능입니다. object_pairs_hook의 리턴 값 대신 딕셔너리로 사용된다. 이 기능 키 및 값 쌍 (예를 들어, collections.OrderedDict ()는 삽입의 순서를 기억한다) 복호화되는 순서에 의존 맞춤 디코더를 구현하기 위해 사용될 수있다. object_hook도 정의되어있는 경 우, object_pairs_hook은 우선합니다. **kw 별도의 사용자 오류시 사용
  • 9. 기본 스트림을 파일에 저장하고 다시 파이썬 처리를 위한 변환처리 f = open("file_txt1",'w+') f.write('[{"a": "A", "c": 3.0, "b": [2, 4]}]') f.flush() f.seek(0) print json.load(f) f.close() #결과값 [{u'a': u'A', u'c': 3.0, u'b': [2, 4]}]
  • 10. json module : loads()
  • 11. json Module : json.loads json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]]) parameter 설명 s string encoding utf-8, ascii 인코딩 타입 cls 별도의 사용자 오류시 사용 object_hook object_hook는 객체 리터럴 디코딩 (DICT)의 결과로 호출되는 선택적 기능입니다. object_hook의 리턴 값 대신 딕셔너리로 사용된다. 이 기능은 사용자의 디코더 (를 구현하 는데 사용될 수있다. parse_float Float 처리 parse_int Int 처리 parse_constant '-Infinity', 'Infinity', 'NaN’ 처리 object_pairs_hook 객체 변환을 위한 함수 변환 연결 **kw 별도의 사용자 오류시 사용
  • 12. 기본 Json 형태의 스트링을 파이썬 타입으로 변환 #json --> python decoding obj_jl = u'{"answer": [42.2], "abs": 42}' obj_pl = json.loads(obj_jl) print("decoding",obj_pl) #결과값 ('decoding', {u'answer': [42.2], u'abs': 42})
  • 13. obejct_hook 처리 방식 obejct_hook 파라미터에 변환함수를 지정하고 변환하는 객체의 값을 처리 # obejct_hook 에 처리할 함수 정의 def obejct_hook _processing(obj) : #obj를 전환 convert_obj = 처리로직 return convert_obj json.loads(encoded_object, object_hook= obejct_hook _processing) #json_myobj.py class MyObj(object): def __init__(self, s): self.s = s def __repr__(self): return '<MyObj(%s)>' % self.s encoded_object = '[{"s": "instance value goes here", "__module__": "json_myobj", "__class__": "MyObj"}]'
  • 14. obejct_hook : 클래스 생성 JSON에 넘겨진 클래스 객체에 대해 생성 #json_myobj.py class MyObj(object): def __init__(self, s): self.s = s def __repr__(self): return '<MyObj(%s)>' % self.s
  • 15. obejct_hook : 함수 생성 Object_hook에 클래스 객체와 연결될 함수를 생 성 #json.obj.py import json def dict_to_object(d): if '__class__' in d: class_name = d.pop('__class__') module_name = d.pop('__module__') module = __import__(module_name) #클래스 타입을 넣고 class_ = getattr(module, class_name) print 'CLASS:', class_ #클래스 아키먼트를 가져오고 kargs = dict( (key, value) for key, value in d.items()) print 'INSTANCE ARGS:', args #instance 생성 inst = class_(**kargs) else: inst = d return inst 1. 변수 = 클래스타입을 할당 2. 변수(파라미터)에 키와 값을 가지는 파라미터를 전달시 변수명 앞예 ** 를 붙이고 실행 함수 파리미터 d 에 전단됨 {"s": "instance value goes here", "__module__": "json_myobj", "__class__": "MyObj"}
  • 16. obejct_hook : 실행 실행해서 인스턴스를 변수에 할당 #json.obj.py # json 데이터 encoded_object = '[{"s": "instance value goes here", "__module__": "json_myobj", "__class__": "MyObj"}]‘ #json 데이터를 변환해서 인스턴스로 전환 myobj_instance = json.loads(encoded_object, object_hook=dict_to_object) print type(myobj_instance), myobj_instance[0].__dict__ #결과값 CLASS: <class 'json_myobj.MyObj'> INSTANCE ARGS: {u's': u'instance value goes here'} <type 'list'> {'s': u'instance value goes here'}
  • 17. obejct_hook 이용한 encoding Unicode 처리를 함수를 이용하여 ascii 처리로 전환 #object_hook 용 함수 처리 def ascii_encode_dict(data): ascii_encode = lambda x: x.encode('ascii') return dict(map(ascii_encode, pair) for pair in data.items()) #json data json_data = '{"foo": "bar", "bar": "baz"}‘ #python 스타일로 변환  unicode print json.loads(json_data) #python 스타일로 변환  Ascii print json.loads(json_data, object_hook=ascii_encode_dict) #결과값 {u'foo': u'bar', u'bar': u'baz'} {'foo': 'bar', 'bar': 'baz'}
  • 18. json module : JSONDecorder
  • 19. JSONDecoder 클래스 사용 Json. JSONDecoder를 이용해서 JSON 형태의 스 트링을 파이썬 타입으로 변환 from json import JSONDecoder #인스턴스 객체 생성 jd = JSONDecoder() #메소드에 JSON 타입 전달 jd_p = jd.decode("""{ "a":"b" }""") print(type(jd_p),jd.decode("""{ "a":"b" }""")) #dumps()함수를 사용해서 decoding print(type(json.loads("""{ "a":"b" }""")), json.loads("""{ "a":"b" }""")) #결과값 (<type 'dict'>, {u'a': u'b'}) (<type 'dict'>, {u'a': u'b'})
  • 21. encoding 부호화(encoding)되지 않을 것을 특정 기준에 따 라 전환하는 것 Python JSON dict object list, tuple array str, unicode string int, long, float number True true False false None null
  • 22. json module : dump()
  • 23. json.dump 파라미터 json.dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw) parameter 설명 obj Python 스타일 객체 fp 파일명 skipkeys=False basic type (str, unicode, int, long, float, bool, None) 이 아닐 경우 오류처리 ensure_ascii=True Ascii /unicode 처리 방식 check_circular=True 거짓 인 경우, 컨테이너 유형에 대한 순환 참조 검사가 생략되며 순환 참조는 오버플로 오류 처리 allow_nan=True (nan, inf, -inf) 처리를 위해 사용 cls=None 별도의 사용자 오류시 사용 indent=None 출력하는 것에 대한 인텐트 처리 separators=None, (item_separator, dict_separator) tuple default (', ', ': ') separators이며 공백을 제거할 경우 (',', ':') 사용 encoding="utf-8 인코딩 타입 default=None 변환함수 입력 sort_keys=False True 일 경우 sort 처리 **kw 별도의 사용자 오류시 사용
  • 24. 기본 스트림처리를 위해 file을 사용해서 처리하고 저 장해서 처리 import json data = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ] f = open("file_txt",'w') json.dump(data, f) f.flush() print open(f.name, 'r').read() #결과값 [{"a": "A", "c": 3.0, "b": [2, 4]}]
  • 25. json module : dumps()
  • 26. json.dumps json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw) parameter 설명 obj Python 스타일 객체 skipkeys=False basic type (str, unicode, int, long, float, bool, None) 이 아닐 경우 오류처리 ensure_ascii=True Ascii 처리 방식 check_circular=True 거짓 인 경우, 컨테이너 유형에 대한 순환 참조 검사가 생략되며 순환 참조는 오버플로 오류 처리 allow_nan=True (nan, inf, -inf) 처리를 위해 사용 cls=None 별도의 사용자 오류시 사용 indent=None 출력하는 것에 대한 인텐트 처리 separators=None, (item_separator, dict_separator) tuple default (', ', ': ') separators이며 공백을 제거할 경우 (',', ':') 사용 encoding="utf-8” 인코딩 타입 default=None 변환함수 입력 sort_keys=False True 일 경우 sort 처리 **kw 별도의 사용자 오류시 사용
  • 27. 기본 파이썬 타입을 json 스트링으로 변환 #python --> json encoding obj_pd = {u"answer": [42.2], u"abs": 42} obj_jd = json.dumps(obj_pd) print("encoding ",type(obj_jd), obj_jd) #결과값 ('encoding ', <type 'str'>, '{"answer": [42.2], "abs": 42}')
  • 28. tuple ->list Tuple 타입은 JSON에 존재하지 않아서 list 타입 으로 전환되어 버림 #원소중에 dict 을 가지는 리스트 생성 data = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ] print 'DATA:', type(data), data print 'DATA repr:', type(repr(data)), repr(data) #json 으로 전환 data_string = json.dumps(data) print 'JSON:', data_string #decoding 해도 리스트로 남는다 print "Data ",json.loads(data_string) #결과값 DATA: <type 'list'> [{'a': 'A', 'c': 3.0, 'b': (2, 4)}] DATA repr: <type 'str'> [{'a': 'A', 'c': 3.0, 'b': (2, 4)}] JSON: [{"a": "A", "c": 3.0, "b": [2, 4]}] Data [{u'a': u'A', u'c': 3.0, u'b': [2, 4]}]
  • 29. ensure_ascii 처리 Ensure_ascii=False 일 경우 Unicode 타입는 unicode 데이터 타입으로 전환 print type(json.dumps({'a':u'b'}, ensure_ascii=True)) # <type 'str'> print json.dumps({'a':u'b'}, ensure_ascii=True) print type(json.dumps({'a':'b'}, ensure_ascii=False)) # <type 'str'> print json.dumps({'a':'b'}, ensure_ascii=False) print type(json.dumps({'a':u'b'}, ensure_ascii=False)) #<type 'unicode'> print json.dumps({'a':u'b'}, ensure_ascii=False) #결과값 <type 'str'> {"a": "b"} <type 'str'> {"a": "b"} <type 'unicode'> {"a": "b"}
  • 30. sort_keys처리 파이썬 타입을 sort_keys 에 맞춰 json 스트링으 로 변환 data = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ] print 'DATA:', repr(data) unsorted = json.dumps(data) print 'JSON:', json.dumps(data) print 'SORT:', json.dumps(data, sort_keys=True) first = json.dumps(data, sort_keys=True) second = json.dumps(data, sort_keys=True) print 'UNSORTED MATCH:', unsorted == first print 'SORTED MATCH :', first == second #결과값 DATA: [{'a': 'A', 'c': 3.0, 'b': (2, 4)}] JSON: [{"a": "A", "c": 3.0, "b": [2, 4]}] SORT: [{"a": "A", "b": [2, 4], "c": 3.0}] UNSORTED MATCH: False SORTED MATCH : True
  • 31. intent처리 파이썬 타입을intent에 맞춰 json 스트링으로 변 환 #intent를 주어 보기좋게 하기 obj = {u"answer": [42.2], u"abs": 42} print(repr(json.dumps(obj, indent=4))) print(json.dumps(obj, indent=4))) #결과값 '{n "answer": [n 42.2n ], n "abs": 42n}' { "answer": [ 42.2 ], "abs": 42 }
  • 32. separators 처리 파이썬 타입을 separators 에 맞춰 json 스트 링으로 변환  separatros에 blank가 없으므로 blank가 제거됨 data = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ] print 'DATA:', repr(data) print 'repr(data) :', repr(data) print 'dumps(data) :', json.dumps(data), len(json.dumps(data)) print 'dumps(data, separators):', json.dumps(data, separators=(',',':')),len(json.dumps(data, separators=(',',':'))) #결과값 repr(data) : [{'a': 'A', 'c': 3.0, 'b': (2, 4)}] dumps(data) : [{"a": "A", "c": 3.0, "b": [2, 4]}] 35 dumps(data, separators): [{"a":"A","c":3.0,"b":[2,4]}] 29
  • 33. default 처리 흐름 Default 파라미터에는 변환함수를 지정하여 파이 썬에서 Json으로 전환될 수 있는 형태 처리 한 후 에 dumps함수가 실행 # default에 처리할 함수 정의 def default_processing(obj) : #obj를 전환 convert_obj = 처리로직 return convert_obj Json.dumps(obj, default=default_processing) # 부호화 대상 파이썬 객체 obj = 파이썬 객체
  • 34. default : 사용자정의 객체1 파이썬 타입 중 인스턴스를 default에 변환 함수 를 지정해서 json 스트링으로 변환 # 파이썬 클래스 생성 class User(object): def __init__(self, name, password): self.name = name self.password = password #파이썬 인스턴스 생성 alice = User('Alice A. Adams', 'secret') #인스턴스 내의 속성만 전환 매소드 def jdefault(o): return o.__dict__ # Json으로 변환 print(json.dumps(alice, default=jdefault)) #결과값 {"password": "secret", "name": "Alice A. Adams"}
  • 35. default : 사용자정의 객체 2 파이썬 타입 중 인스턴스를 default에 변환 함수 를 지정해서 json 스트링으로 변환 import json class MyObj(object): def __init__(self, s): self.s = s def __repr__(self): return '<MyObj(%s)>' % self.s obj = MyObj('instance value goes here') def convert_to_builtin_type(obj): print 'default(', repr(obj), ')' # Convert objects to a dictionary of their representation d = { '__class__':obj.__class__.__name__, '__module__':obj.__module__, } d.update(obj.__dict__) return d #결과값 {"s": "instance value goes here", "__module__": "__main__", "__class__": "MyObj"} print json.dumps(obj, default=convert_to_builtin_type)
  • 36. default : set type변환 파이썬 타입 중 set을 default에 변환 함수를 지 정해서 json 스트링으로 변환 # set 타입을 리스트로 전환 def jdefault_set(o): if isinstance(o, set): return list(o) return o.__dict__ pets = set([u'Tiger', u'Panther', u'Toad']) pets_js = json.dumps(pets, default=jdefault_set) print( type(pets_js),json.dumps(pets, default=jdefault_set))) #결과값 (<type 'str'>, '["Tiger", "Toad", "Panther"]')
  • 37. json module : JSONEecorder
  • 38. Encode/iterencode 파이썬에서 JSON으로 부호화, iterable 처리가 필요할 경우 iterencode를 사용 import json encoder = json.JSONEncoder() data = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ] print encoder.encode(data) for part in encoder.iterencode(data): print 'PART:', part #결과값 [{"a": "A", "c": 3.0, "b": [2, 4]}] PART: [ PART: { PART: "a" PART: : PART: "A" PART: , PART: "c" PART: : PART: 3.0 PART: , PART: "b" PART: : PART: [2 PART: , 4 PART: ] PART: } PART: ]