JSON
JSON(JavaScript Object Notation)
- Javascript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷
- 데이터 전송 및 수신할 때 메시지 포맷으로 주로 사용
- Javascript
- JSON 객체가 지원 : 브라우저
- Python
- json 모듈에서 지원 : dJango
JSON 문자열
- JSON을 문자열로 표현
- 키는 만드시 "" 문자열로 표현
- 값 파트는 데이터 타입에 맞춰 표현
json_str = """
{
list : [
{"name" : "kyeongrok", "age" : 32},
{"name" : "bomi", "age" : 25},
{"name" : "cl", "age" : 27}
]
}
"""
Javascript의 JSON 처리
- 직렬화(Serialize)
- Java Object → JSON 문자열
- JSON.stringify(Java Object)
- JSON 문자열 반환
- 역직렬화(Deserialize)
- JSON 문자열 → Java Object
- JSON.parse(JSON 문자열)
- Java Object 반환
json-ex.js
let myObj = {
name: "Chris",
age: 38
};
console.log("myObj:", myObj);
// 직렬화
let myString = JSON.stringify(myObj);
console.log("myString:", myString);
// 역직렬화
let myObj2 = JSON.parse(myString);
console.log("myObj2:", myObj2);
myObj: { name: 'Chris', age: 38 }
myString: {"name":"Chris","age":38}
myObj2: { name: 'Chris', age: 38 }
Python의 JSON 처리
- import json
- 표준 파이썬 자료구조를 변환
- dict → javascript object
- list, tuple → javascript array
- 직렬화(Serialize)
- 표준 자료형 → JSON 문자열
- json.dumps(표준 자료형)
- JSON 문자열 반환
- 역직렬화(Deserialize)
- JSON 문자열 → 표준 자료형
- JSON.loads(JSON 문자열)
- 표준 자료형으로 변환
json-ex.py
import json
myDict = {
"name" : "Chris",
"age" : 38 }
print("myDict:", myDict)
# 직렬화
myString = json.dumps(myDict)
print("myString:", myString)
# 역직렬화
myDict2 = json.loads(myString);
print("myDict2", myDict2)
myDict: {'name': 'Chris', 'age': 38}
myString: {"name": "Chris", "age": 38}
myDict2 {'name': 'Chris', 'age': 38}
json-ex2.py
import json
json_str = """
[
{"name" : "kyeongrok", "age" : 32},
{"name" : "bomi", "age" : 25},
{"name" : "cl", "age" : 27}
]
"""
json_obj = json.loads(json_str)
print(json_obj)
print(json_obj[2])
print(json_obj[0:2])
[{'name': 'kyeongrok', 'age': 32}, {'name': 'bomi', 'age': 25}, {'name': 'cl', 'age': 27}]
{'name': 'cl', 'age': 27}
[{'name': 'kyeongrok', 'age': 32}, {'name': 'bomi', 'age': 25}]
json-ex3.py
import json
json_str = """
[
{"name" : "kyeongrok", "age" : 32},
{"name" : "bomi", "age" : 25},
{"name" : "cl", "age" : 27}
]
"""
json_obj = json.loads(json_str)
for student in json_obj:
print(f"이름 : {student['name']} , 나이 : {student['age']}")
이름 : kyeongrok , 나이 : 32
이름 : bomi , 나이 : 25
이름 : cl , 나이 : 27
Django의 JSON 지원
- from django.core import serializers
- 장고 모델 객체 리스트를 직렬화
- 단일 모델 객체는 직렬화 안됨
- 구조가 다소 복잡함
- from django.forms.models import model_to_dict
- 장고 모델 객체를 사전으로 변환
- 사전을 json 모듈로 직렬화
- from django.http import JsonResponse
- 사전을 Json으로("Application/json") 변환하여 응답
# 단일 객체 변환
bookmark = OpenBookmark.objects.get(id=id)
data = model_to_dict(bookmark)
return JsonResponse(data)
# 목록 객체 변환
datas = list(map(model_to_dict, OpenBookmark.objects.all()))
return JsonResponse({"datas" : datas})
'인터페이스 개발 > DOM, OpenApi, Ajax' 카테고리의 다른 글
Ajax (0) | 2020.10.08 |
---|---|
이미지 검색 API (0) | 2020.10.08 |
Requests (0) | 2020.10.08 |
DOM 이벤트 (0) | 2020.10.08 |
DOM (0) | 2020.10.08 |
댓글