无法在python中从MongoDB序列化JSON对象

2024-06-16 13:14:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我的MongoDB中存储了以下JSON:

{
"_id" : ObjectId("54fed786265e7f01d66ca778"),
"id" : "http://some.site.somewhere/entry-schema#",
"schema" : "http://json-schema.org/draft-04/schema#",
"description" : "schema for an fstab entry",
"type" : "object",
"required" : [
    "storage"
],
"properties" : {
    "storage" : {
        "type" : "object",
        "oneOf" : [
            DBRef("#/definitions/diskDevice", 1),
            DBRef("#/definitions/diskUUID", 2),
            DBRef("#/definitions/nfs", 3),
            DBRef("#/definitions/tmpfs", 4)
        ]
    }
},
"definitions" : {
    "diskDevice" : {            
    },
    "diskUUID" : {          
    },
    "nfs" : {           
    },
    "tmpfs" : {         
    }
  }
}

我使用tornado编写了以下python代码来访问这个JSON对象:

^{pr2}$

但是,当我试图从浏览器访问它时,终端上显示以下错误:

TypeError: DBRef(u'#/definitions/diskDevice', 1) is not JSON serializable
ERROR:root:500 GET /getspecbyid (::1) 5.53ms

我使用的是MongoDB 2.6版 有人能帮我解决这个问题吗?在


Tags: idjsonhttpobjectschemamongodbtypestorage
0条回答
网友
1楼 · 发布于 2024-06-16 13:14:25

出现异常是因为DBRef不是json可序列化的。在

有一个bson.json_utils模块,它有处理mongo实体的loads/dump方法。在

因此,self.write(response)应该是

from bson import json_util #somewhere

self.write(json_util.dumps(response))

相关问题 更多 >