[PYTHON] JSON에서 PyMongo ObjectId를 deserialize 할 수 없습니다.
PYTHONJSON에서 PyMongo ObjectId를 deserialize 할 수 없습니다.
겉으로보기에는 mongoDB JSON 문서를 BSON json_util로 deserialize 할 수 없습니다.
json.loads 함수는 ObjectId () 문자열을 질식합니다. MongoDB의 ObjectId 형식을 처리하고 사용 가능한 JSON으로 변환 할 수있는 json_util을 이해했습니다.
파이썬 코드 :
import json
from bson import json_util
s = "{u'_id': ObjectId('4ed559abf047050c58000000')}"
u = json.loads(s, object_hook=json_util.object_hook)
디코더 예외가 발생합니다.
...
u = json.loads(s, object_hook=json_util.object_hook)
File "\python27\lib\json\__init__.py", line 339, in loads
return cls(encoding=encoding, **kw).decode(s)
File "\python27\lib\json\decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "\python27\lib\json\decoder.py", line 382, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 1 column 1 (char 1)
내가 놓친 게 있니?
해결법
-
==============================
1.귀하의 문자열 양식을 실제로 파이썬 표현처럼 보이는 ...
귀하의 문자열 양식을 실제로 파이썬 표현처럼 보이는 ...
s = '{"_id": {"$oid": "4edebd262ae5e93b41000000"}}' u = json.loads(s, object_hook=json_util.object_hook) print u # Result: {u'_id': ObjectId('4edebd262ae5e93b41000000')} s = json.dumps(u, default=json_util.default) print s # Result: {"_id": {"$oid": "4edebd262ae5e93b41000000"}}
bson.json_util.object_hook 함수는 실제 json 문자열 표현에서 ObjectId ()가 처리되는 유형을 처리하지 않습니다.
-
==============================
2.여기에는 두 가지 문제가 있습니다.
여기에는 두 가지 문제가 있습니다.
json_util을 올바르게 사용하는 방법에 대한 예제는 @jdi의 대답을 참조하십시오.
from https://stackoverflow.com/questions/8409194/unable-to-deserialize-pymongo-objectid-from-json by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬을 사용하여 많은 파일 다운로드하기 (0) | 2018.11.27 |
---|---|
[PYTHON] "Quoted-printable"인코딩을 "utf-8"로 변경하십시오. (0) | 2018.11.27 |
[PYTHON] 파이썬을 사용하여 CSV 파일 읽기 (0) | 2018.11.27 |
[PYTHON] Heroku에 장고 배포 (Psycopg2 오류) (0) | 2018.11.27 |
[PYTHON] TensorFlow : 반복 불가능한 결과 (0) | 2018.11.27 |