第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PyMongo json_util.dumps 覆蓋 ObjectId 表示

PyMongo json_util.dumps 覆蓋 ObjectId 表示

溫溫醬 2022-06-14 17:12:12
bson.json_util提供轉(zhuǎn)換為規(guī)范或?qū)捤?JSON 格式的函數(shù)。但是,它們都堅持 ObjectId 的相同表示:from PyMongo import MongoClientfrom bson.objectid import ObjectIdfrom bson import json_utilfrom bson.json_util import RELAXED_JSON_OPTIONSfrom bson.json_util import CANONICAL_JSON_OPTIONS, DEFAULT_JSON_OPTIONSdb = MongoClient(URL)['DB_NAME']mongo_query_result = db.collection.find_one({'_id': ObjectId('ID')},                                                    {'_id': 1})# returns {'_id': ObjectId('ID')}print(json_util.dumps(mongo_query_result, json_options=RELAXED_JSON_OPTIONS))print(json_util.dumps(mongo_query_result, json_options=CANONICAL_JSON_OPTIONS))print(json_util.dumps(mongo_query_result, json_options=DEFAULT_JSON_OPTIONS))# Results{"_id": {"$oid": "ID"}}{"_id": {"$oid": "ID"}}{"_id": {"$oid": "ID"}}# Desired Output{"_id": "ID"}問題在于它與我在 prod env 中得到的結(jié)果不匹配。我PyMongo只是用來構(gòu)建測試用例,實際的產(chǎn)品格式是{'_id': "ID", ..etc}我在這里查看了一些文檔,以下是調(diào)查結(jié)果:CANONICAL_JSON_OPTIONS 和 RELAXED_JSON_OPTIONS 都堅持有問題的表示,規(guī)范在這里。我似乎無法覆蓋它,因為uuid_representation=PYTHON_LEGACY我似乎無法找到解決方法。我是否缺少將PyMongo查詢結(jié)果轉(zhuǎn)換為:{'_id' : 'ID', ..}# not{'_id' : {'$oid' : 'ID'}, ..}我不想擴展我的代碼只是為了處理不同格式的測試用例。
查看完整描述

2 回答

?
富國滬深

TA貢獻1790條經(jīng)驗 獲得超9個贊

這是我的做法,只使用提供的json

json.dumps(list(products.find({})), default=lambda o: str(o))


查看完整回答
反對 回復(fù) 2022-06-14
?
慕沐林林

TA貢獻2016條經(jīng)驗 獲得超9個贊

作為一種解決方法,我能夠使用re正則表達式完成相同的結(jié)果:


import re


def remove_oid(string):

    while True:

        pattern = re.compile('{\s*"\$oid":\s*(\"[a-z0-9]{1,}\")\s*}')

        match = re.search(pattern, string)

        if match:

            string = string.replace(match.group(0), match.group(1))

        else:

            return string


string = json_dumps(mongo_query_result)

string = remove_oid(string)

這實質(zhì)上將 CANONICAL_JSON 替換為規(guī)范化的 JSON,并將鍵值刪除為一個值。


盡管這可以完成工作,但它并不理想,因為我JSON將其作為字符串進行操作,并且非常容易出錯,而且不適用于Date其他格式。


查看完整回答
反對 回復(fù) 2022-06-14
  • 2 回答
  • 0 關(guān)注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號