๐[Web] JSON์ ๋ํด์โฆ
JSON์ด๋?
JSON์ JavaScript Object Notation
์ ์ฝ์๋ก, ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ๋ฌธ๋ฒ์ผ๋ก ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ํํํ๊ธฐ ์ํ ๋ฌธ์ ๊ธฐ๋ฐ์ ํ์ค ํฌ๋งท์ด๋ค.
์น ์ดํ๋ฆฌ์ผ์ด์
์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋, ์ผ๋ฐ์ ์ผ๋ก jsonํํ๋ฅผ ์ฌ์ฉํ๋ค.
๊ธฐ์กด์ ์กด์ฌํ๋, xml
๊ณผ csv
ํ์ผ๊ณผ๋ ๋ค๋ฅธ ํํ์ ๋ฌธ์ ํํ์ด๋ค.
JSON๋ฌธ์์ ํํ
json์ "ํค":"๊ฐ"
์ ํํ๋ก ์ ์ฅ๋๋ค.
์ค๊ดํธ({})๋ก ๊ฐ์ธ์ ํํํ๋ฉฐ, ์ฝค๋ง(,)๋ฅผ ์ฌ์ฉํด ์ฌ๋ฌ โํค:๊ฐโ์ ์ ์ฅํ ์ ์๋ค.
- ์์
# Key-Value๋ก ์ด๋ฃจ์ด์ง jsonObject { "id": 1, "name": "helloalpaca" }
JSON์ธ์ ๋ค๋ฅธ ๋ฌธ์ ํ์
XML
XML
์ Extensible Markup Language์ ์ฝ์๋ก, ํ๋์ ์ธ์ด ํ์ผ์ด๋ค.
xml์ ๋ ๋ค๋ฅธ ๋งํฌ์
์ธ์ด์ธ html
๊ณผ ์ ์ฌํ ๋ฌธ๋ฒ์ ๋ฐ๋ฅด๊ณ , ํ์ฅ์๋ .xml
์ด๋ค.
์์๋ก๋ ์น ํ๋ก์ ํธ๋ฅผ ๋ง๋ค ๋, pom.xml
ํ์ผ์ด ์๋ค.
xml์ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ html๊ณผ ๋น์ทํ ๋ฌธ๋ฒ์ผ๋ก ์ ์ฅํ๋ค๋ณด๋, <><>
ํน์ <></>
๋ก ๋๋ฌ์์ธ ๋ฐ์ดํฐ๊ฐ ๋ง์ ๊ฐ๋
์ฑ์ด ๋จ์ด์ง๋ค.
- xml ์์ (์์ ์ถ์ฒ)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE AXLContext SYSTEM "standardX10.dtd">
<AXLContext>
<ObjectID/>
<name>context_x10</name>
<description>context_x10 in My Organization</description>
<objectContainerPath>/wt.inf.container.OrgContainer=My Organization</objectContainerPath>
</AXLContext>
CSV
CSV
๋ ๋ช ๊ฐ์ง ํ๋๋ฅผ ์ฝค๋ง(,)๋ก ๊ตฌ๋ถํ ํ
์คํธ ๋ฐ์ดํฐ ๋ฐ ํ
์คํธ ํ์ผ์ด๋ค.
ํ์ฅ์๋ .csv
์ด๋ฉฐ, ์์
๊ณผ ์ ์ฌํ ํํ๋ฅผ ๊ฐ์ง๋ค.
์ค์ ๊ณต๊ณต๋ฐ์ดํฐํฌํธ์ ๋ค์ด๊ฐ๋ณด๋ฉด, Open API๊ฐ ์๋๋ฐ apiํ์์ผ๋ก โjson, xml, csvโ์ ๊ฐ์ ํ์์ด ์กด์ฌํ๋ค.
- csv์์ (์์ ์ถ์ฒ)
์ฐ๋,์ ์กฐ์ฌ,๋ชจ๋ธ,์ค๋ช
,๊ฐ๊ฒฉ
1997,Ford,E350,"ac, abs, moon",3000.00
1999,Chevy,"Venture ""Extended Edition""","",4900.00
1999,Chevy,"Venture ""Extended Edition, Very Large""",,5000.00
1996,Jeep,Grand Cherokee,"MUST SELL!air, moon roof, loaded",4799.00
ํ์ฑ์ด๋?
ํ์ฑ(Parsing)
์ด๋, ๋ฌธ์์ด์์ ๋ค์ดํฐ๋ธ ๊ฐ์ฒด๋ก ๋ณํํ๋ ๋์์ ๋งํ๋ค.
์ฝ๊ฒ ์๊ฐํ๋ฉด โ๋ฐ์ดํฐ๋ฅผ ๋ฝ์๋ธ๋คโ๋ผ๊ณ ์๊ฐํ ์ ์์ ๊ฒ ๊ฐ๋ค.
Key 1๊ฐ:Value 1๊ฐ ํ์ฑ
ํ์ด์ฌ ๊ธฐ์ค์ผ๋ก, Key 1๊ฐ:Value 1๊ฐ
๋ฅผ ํ์ฑํด๋ณด์.
js1 = '{"id": 1, "name": "helloalpaca"}'
jsonObject = json.loads(js1)
print(jsonObject.get("name"))
์ ์ฝ๋๋ฅผ ์คํํ๋ฉด ๊ฒฐ๊ณผ ๊ฐ์ผ๋ก โhelloalpacaโ๊ฐ ์ถ๋ ฅ๋ ๊ฒ์ด๋ค.
Key 1๊ฐ:Value N๊ฐ ํ์ฑ
๋ค์์ผ๋ก Key 1๊ฐ:Value N๊ฐ
๋ฅผ ํ์ฑํด๋ณด์.
js2 = '{"id": 1, "name": ["helloalpaca", "choppermask"]}'
jsonObject = json.loads(js2)
jsonArray = jsonObject.get("name")
for list in jsonArray:
print(list)
์ ์ฝ๋๋ฅผ ์คํํ๋ฉด ๊ฒฐ๊ณผ ๊ฐ์ผ๋ก โhelloalpaca, choppermaskโ๊ฐ ์ถ๋ ฅ๋๋ค.
์ค์ฒฉ๋ Object ํ์ฑ
info๋ผ๋ key์ ์ ๋ณด๋ฅผ get()์ ์ค์ฒฉ
์ฌ์ฉํ์ฌ ํ์ฑํด๋ณด์.
js3 = '{"id": 1, "info": {"name": "helloalpaca", "email": "jms393497@gmail.com"}}'
jsonObject = json.loads(js3)
print(jsonObject.get("info").get("name"))
์ ์ฝ๋๋ฅผ ์คํํ๋ฉด โhelloalpacaโ๊ฐ ์ถ๋ ฅ๋๋ค.
JSON ํ์ผ ์ฝ๊ธฐ
jsonํ์ผ์ ์ฝ์ด์ค๊ณ ์ถ์ผ๋ฉด, open()
์ ๋ด๊ฐ ์ฝ์ json ํ์ผ์ ์ง์ ํด์ฃผ๊ณ , laod()
๋ก ๊ฐ์ ธ์ค๋ฉด ๋๋ค.
import json
file = open('example.json')
jsonString = json.load(file)
print(jsonString.get("info"))
๋๊ธ๋จ๊ธฐ๊ธฐ