josnify insert_id dump 낙서장 str -> ObjectId

josnify insert_id dump 낙서장 str -> ObjectId

jsonify는 JSON 데이터를 내보내도록 제공하는 flask의 함수이며 기본 헤더가 'content-type': 'application/json'로 되어 있는 flask.Response() 객체를 리턴한다.

jsonify : 딕셔너리 , 리스트를 매개변수로 받을 수 있다.

json.dumps : jsonify 보다 더 다양한 type을 받을 수 있다고 나와있다.

from bson.json_util import dumps

콘텐츠 타입은 아래와 같다.

jsonify : application/json

json.dumps : text/html; charset=utf-8

return 값을 jsonify나 dumps를 안쓰고 그냥 dictionary로 했을 경우에도 : application/json

따라서 그냥 jsonify주지 않아도 잘 갔던 것 같다.

jsonify는 일부형식을 못반환한다고 한다.

mongoDB에서 ObjectId를 jsonify로하면 오류가 나지만 dumps로 사용했더니 오류가 나지 않았다.

Object of type ObjectId is not JSON serializable

mongoDB에 데이터를 추가하고 그 데이터를 바로 js로 보내려고하는데

pymongo.results.InsertOneResult라고 떴다. 물론 dump를 사용해도 안되었다.

TypeError: Object of type InsertOneResult is not JSON serializable

InsertOneResult 객체엔 문서 고유 ID인 insert_id 속성 내장이 되어있다고한다. 따라서

방금추가한것.insert_id를 통해서 find_one으로 올린걸 찾아서 보내는 방식을 사용하기로했다.

insert_one객체에 .insert_id하면 아이디값 반환해준다.

objectid변환방법

str인 objectid를 objectId화로 시킬려면 아래의 경로를 통해 objectid를 import해서 변환해주자 objectId(str)

from bson.objectid import ObjectId

반응형

from http://taehyeki.tistory.com/152 by ccl(A) rewrite - 2021-12-30 18:00:42