JSON 파일이란?

미남잉·2021년 11월 9일
2
post-thumbnail

💡 JSON은 (용량을 줄이기 위한 장점을 가진) data 교환 형식이다.
💡 JSON은 쉽게 객체(Object)로 바꿔주거나 객체(Object)를 JSON으로 바꿔주는 Library가 대부분 언어에서 존재한다.

1. JSON이란?

  • JSON은 JavaScript Object Notation의 줄임말이다.
  • JSON은 경량(Lightweight)의 DATA 교환 형식이다.
  • Javascript에서 객체를 만들 때 사용하는 표현식을 의미한다.
  • JSON 표현식은 사람과 기계 모두 이해하기 쉬우며 용량이 작아서, 최근에는 JSON이 XML을 대체해서 데이터 전송 등에 많이 사용한다.
  • 특정 언어에 종속되지 않으며, 대부분의 프로그래밍 언어에서 JSON 포맷의 데이터를 핸들링 할 수 있는 라이브러리를 제공한다.

2. JSON(JavaScript Object Notation) 형식

2.1 name-value 형식의 쌍(pair)

  • 여러 가지 언들에서 object, hashtable, struct로 실현되었다.

💡 { String key : String Value}

{
  "firstName": "cha",
  "lastName": "suyeon",
  "email": "suyeon@gmail.com",
  "hobby": ["yoga","dancing"]
}

2.2 값들의 순서화된 리스트 형식

  • 여러 가지 언어들에서 배열(Array), 리스트(List)로 실현되었다.
  • [ value1, value2, ….. ]

json 을 이용해서 train_df를 만들어주는 코드

train_meta = []
for j in train_jsons:
    json_obj = json.load(open(j))
    # json_obj['features']
    for f in json_obj['features']:
        # geometry
        geo_coord = f['geometry']['coordinates']
        geo_type = f['geometry']['type']
        # properties
        object_imcoords = f['properties']['object_imcoords']
        object_angle = f['properties']['object_angle']
        building_imcoords = f['properties']['building_imcoords']
        road_imcoords = f['properties']['road_imcoords'] 
        image_id = f['properties']['image_id'] # 영상 ID
        ingest_time = f['properties']['ingest_time'] # 	영상 생성 시간
        type_id = f['properties']['type_id'] # 정수 (1~N), 클래스 id
        type_name = f['properties']['type_name'] # 클래스 이름

        # add to list
        train_meta.append([image_id, type_id, type_name, geo_coord, geo_type, object_angle,
                           object_imcoords, building_imcoords, road_imcoords, ingest_time])
# Make dataframe
df_train = pd.DataFrame(train_meta,
                        columns = ['image_id','type_id','type_name','geo_coord','geo_type','object_angle',
                                   'object_imcoords','building_imcoords','road_imcoords','ingest_time'])

왜냐하면 json 파일은

{"features": [{"geometry": {"coordinates": [[130.9623813425, 33.877856147, 0.0], [130.9684677235, 33.8777590378, 0.0], [130.9685843442, 33.8828355853, 0.0], [130.9624976031, 33.882932713, 0.0]], "type": "Polygon"}, "properties": {"object_imcoords": "577.5335936447841,644.9753585661617,426.2586173885984,412.9800659741642,497.070506704797,366.8064270382977,648.3454829609827,598.8017196302953", "object_angle": 2.1486187195514876, "building_imcoords": "EMPTY", "road_imcoords": "EMPTY", "image_id": "OBJ07450_PS3_K3A_NIA0834.png", "ingest_time": "2020-11-04T06:53:36.815709Z", "type_id": "12", "type_name": "dam"}, "type": "Feature"}], "type": "FeatureCollection"}

이렇게 생겼고, 처음보면(계속 봐도) 잘 안 읽힌다.

크게는

{"feature" : [ ],
"type": "FeatureCollection"}

이런 형태이고 저 feature라는 리스트 안에

- feature ("type": "FeatureCollection")
    - geometry ("type": "Polygon")
        - coordinates
    - properties ("type": "Feature")
        - object_imcoords
        - object_angle
        - building_imcoords
        - road_imcoords
        - image_id
        - ingest_time
        - type_id
        - type_name

이런 형식을 이루고 있다.


2.3 정리

💡 JSON 형식은 Javascript 객체와 마찬가지로 key / value가 존재할 수 있으며 key값이나 문자열은 항상 " "를 이용하여 표기한다.


2.4 JSON VEIWER

만약 이렇게 생긴 JSON 파일이 있다면

이런식으로 읽어주는 뷰어 사이트가 있습니다.

👉 링크

또한, json.dump(), json.dumps()의 기능이 있습니다.

이것들은 json을 더 한결 보기 편하게 읽어줍니다.(왜 갑자기 번역투가 나오지)

import json 후에 사용하면 되고, 저도 더 공부한 다음에 정리하여 글을 올려보도록 하겠습니다!

profile
Tistory로 이사갔어요

2개의 댓글

comment-user-thumbnail
2023년 11월 17일

SportsFire APK https://sportsfire.org/ stands out as a premier live broadcast app for global sports enthusiasts. Offering a diverse array of games—from football and basketball to table tennis and more—it's the ultimate choice for fans seeking coverage of the world's most crucial sporting events.

답글 달기
comment-user-thumbnail
2023년 12월 6일

Here, you can get Nintendo Switch Roms for free. We have direct download links without ads https://krnl.vip/nintendo-switch-roms/

https://krnl.vip/download-super-mario-bros-wonder-nsp-xci-rom-1/

답글 달기