D-1
먼저 엑셀로 데이터를 만들고 .csv로 저장 (엑셀 만세🤩)
.csv ➜ .json
온라인에 무료로 변환해주는 사이트가 있어서 해봤더니 한글이 와장창 깨졌다 흑..
찾아보니 utf-8로 인코딩된 csv면 되는 것 같아서 엑셀에서 다시 csv파일을 열어서 csv utf-8
로 저장했더니 csvjson.com 에서 정상적으로 변환이 됐다.
❌UnicodeDecodeError: 'cp949' codec can't decode byte 0xec in position 182: illegal multibyte sequence
딕셔너리 형식으로 바꿔서 모델이랑 필드 칼럼을 만드려는데.. 또 디코드가 안돼버리기.. 흐ㅣ흐ㅣ encoding='UTF8' 부분을 추가해주면 정상적으로 읽을 수 있다
import json
file_path = "product_goods.json"
with open(file_path,'r', encoding='UTF8') as file:
data = json.load(file)
❌list assignment index out of range
아 바보같이 goods를 빈 배열로 선언해주고선 goods[i]=dict 이러고 앉았다 ㅠㅠ 다 까먹어버리기 있냐고...
{'fields': {'category': 2,
'content': '스톤커피의 자체제작 후드입니다!\n가을겨울 시즌 한정 상품인 점 참 고해주세요!',
'created_at': '2022-12-18',
'image': 'img/goods/STONECOFFEE_HOODIE.jpg',
'like': [],
'price': '58,000',
'product_name': 'STONECOFFEE_HOODIE_grey'},
'model': 'product.product'}
이렇게 나온당 흐ㅣ흐ㅣ 아 순서를 맞추고 싶은데 update 순서를 바꿔도, 패킹 언패킹을 써서 순서를 정해줘도 그냥 지 맘대로 fields가 먼저 나온다 아몰라 안중요하니까.. 키값이나 맞으면 됐지 안그래??? 아몰랑아몰랑아몰랑!!!!!!!!!!!!!!!!!!!!!!
# 안되는 애 하나
{"model":"product.product"}.update(goods[i])
# 안되는 애 둘
product_goods.append({**model, **goods[i]})
https://www.geeksforgeeks.org/python-append-items-at-beginning-of-dictionary/
딕셔너리 키값 순서를 바꿔볼라고 찾아본 것들
다시 .json파일로 바꾸기
❌dump() missing 1 required positional argument: 'fp'
with open('./product_goods_json.json','w',encoding='UTF-8-sig') as f:
json.dump(product_goods, f, indent=4, ensure_ascii=False)
encoding='UTF-8-sig' ➜ 한글 깨지는 것 방지
ensure_ascii=False ➜ 한글이 유니코드로 변환되는 것 방지
*json.dumps는 obj(queryset)을 json형식의 str로 바꾼다