2
pymongo에서 직접 가져온 bson 데이터를 json 데이터로 변환하려고합니다. pymongo 또는 다른 것을 사용하여 파이썬으로 이것을 수행하는 직접적인 방법이 있습니까? 도움이된다면bson을 python/pymongo에서 json으로 변환
여기에 코드입니다 :
def email_main(request):
collection = get_collection("nimbus").fullcontact_email_data
if request.method == "POST":
data = collection.save(dict(request.POST.iterlists()))
response = HttpResponse(data, content_type="application/json")
elif request.method == "GET":
getParams = convertQuerydictToDict(request.GET)
page, itemsPerPage = getPageDataFromDict(getParams)
getParamsWithNoPageData = createDictWithoutPageData(getParams)
data = collection.find(getParamsWithNoPageData)[page:page+itemsPerPage+1]
response = HttpResponse(data, content_type="application/json")
else:
response = HttpResponse(status=404)
return response
def convertQuerydictToDict(queryDict):
return dict(queryDict.iterlists())
def getPageDataFromDict(myDict):
if "page" in myDict and "itemsPerPage" in myDict:
page, itemsPerPage = myDict["page"], myDict['itemsPerPage']
elif "page" in myDict:
page, itemsPerPage = myDict["page"], 10
else:
page, itemsPerPage = 0, 10
return page, itemsPerPage
def createDictWithoutPageData(myDict):
newDict = deepcopy(myDict)
newDict.pop("page", None)
newDict.pop("itemsPerPage", None)
return newDict
는 기본적으로 데이터 변수는 적절한 JSON으로 전환받을 필요가있다. 이 일을하는 것에 내장 된 것이 있어야합니다. 여기에 명확성을 위해
내가 파이썬 콘솔에 데이터를 입력 할 때 내가 무엇을 얻을 :
>>> data
<pymongo.cursor.Cursor object at 0x4dd0f50>
>>> data[0]
{u'blah': u'go', u'_id': ObjectId('540e3fd8bb6933764d5650b7')}
ObjectId가이 JSON 사양의 일부가 아닌 위의 설명에서 언급 한 바와 같이
이 코드의 동작은 사용자가 의도 한 것과 어떻게 다릅니 까? JSON으로 변환하려는'data' 변수의 유형은 정확히 무엇입니까? 우리는'collection.save'가 [이 PyMongo API 호출] (http://api.mongodb.org/python/current/api/pymongo/collection.html#pymongo.collection.Collection.save)을 가리키고 있다고 가정 할 것인가? 또는 다른 것? –
데이터가 pymongo 커서 객체로 반환됩니다. 이 객체를 반복 할 때 반환되는 데이터는 JSON과 호환되지 않는 것들을 포함하는 bson 형식입니다. 그 데이터 변수가 bson 대신 json을 반환하거나 가능한 경우 변환하도록합니다. –
PyMongo의 [''json_util'] 모듈을 보았습니까? (http://api.mongodb.org/python/current/api/bson/json_util.html)이 문제를 해결하는 것으로 보입니까? "json과의 명시적인 BSON 변환 제공" –