garret

[Python] JSON 파일 만들기 본문

Programming/Python

[Python] JSON 파일 만들기

_Sun_ 2023. 3. 17. 15:41

python에서 JSON 파일 생성하는 법을 실습해보았다

 

 

실습용 DataFrame 만들기

import pandas as pd

data_a= [['A',1,90,4],['B',2,88,5],['C',3,85,3.5]]
df_a= pd.DataFrame(data_a, columns=['name','level','score','time'])
df_a
  name level score time
0 A 1 90 4.0
1 B 2 88 5.0
2 C 3 85 3.5

 

01. 기본 JSON 생성

dictionary 형태로 만들어서 json.dumps()함수로 python 객체를 json 데이터로 변환한다

import json

dict1={}
for idx, row in df_a.iterrows():
    name = row['name']
    level = row['level']
    score = row['score']
    time = row['time']

    if name not in dict1.keys():
        dict1[name]={}
    dict1[name]['result'] = {
        'level':level,
        'score':score,
        'time':time
    }
json_str1= json.dumps(dict1, indent=2) # indent: 출력시 들여쓰기
print(json_str1)

 

위에서 생성한 json파일의 구성은 다음과 같다

{
  "A": {
    "result": {
      "level": 1,
      "score": 90,
      "time": 4.0
    }
  },
  "B": {
    "result": {
      "level": 2,
      "score": 88,
      "time": 5.0
    }
  },
  "C": {
    "result": {
      "level": 3,
      "score": 85,
      "time": 3.5
    }
  }
}

 

02. JSON Array 만들기

array가 포함되게 만들어서 json.dumps()함수로 python 객체를 json 데이터로 변환한다

dict2 = {}
dict2['name']=[]
i=0
for idx, row in df_a.iterrows():
    name = row['name']
    level = row['level']
    score = row['score']
    time = row['time']

    dict2['name'].append({'name': name, 'result':[]})
    dict2['name'][i]['result'].append({
        'level':level,
        'score':score,
        'time':time
    })
    i+=1

json_str2 = json.dumps(dict2, indent=2)
print(json_str2)

 

위에서 생성한 json 파일의 구성은 다음과 같다

{
  "name": [
    {
      "name": "A",
      "result": [
        {
          "level": 1,
          "score": 90,
          "time": 4.0
        }
      ]
    },
    {
      "name": "B",
      "result": [
        {
          "level": 2,
          "score": 88,
          "time": 5.0
        }
      ]
    },
    {
      "name": "C",
      "result": [
        {
          "level": 3,
          "score": 85,
          "time": 3.5
        }
      ]
    }
  ]
}

 

 

python에서 JSON 파일을 만드려면 dictionary와 array(list)로 비슷한 형태를 만든 후에 json.dumps()함수로 변환해야하는 것 같다.