본문 바로가기
인터페이스 개발/DOM, OpenApi, Ajax

JSON

by cooluk 2020. 10. 8.

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

댓글