你好,我刚开始尝试使用Python、Tornado和MongoDB做一些实验(我是新手)。我已经编写了一个简单的获取函数来获取我的MongoDB中的所有值,并以JSON格式返回。问题是当我尝试将输出写成JSON字符串时,我会在集合中的最后一条记录之后得到一个尾随逗号(,)。
class TypeList(APIHandler):
@gen.coroutine
def get(self):
cursor = db.vtype.find()
self.write("{"'"success"'": 1, "'"data"'":[")
while (yield cursor.fetch_next):
document = cursor.next_object()
self.write(format(JSONEncoder().encode(document)))
self.write(",")
self.write("]}")
class JSONEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o,ObjectId):
return str(o)
return json.JSONEncoder.default(self, o)
我的输出结果如下:
{"success": 1, "data":[{"_id": "55a5e988545779f35d3ecdf4", "name": "fgkd", "city": "fghj"},{"_id": 12345.0, "name": "adfs", "city": "asd"},]}
请问有人能告诉我如何去除最后一条记录后的逗号(,)?由于这个逗号,我得到了一个错误的JSON字符串。我已经尝试使用json dumps方法。
@gen.coroutine
def get(self):
cursor = db.vtype.find({"brand": "Tata"})
while (yield cursor.fetch_next):
document = cursor.next_object()
self.write(json.dumps(document,default=json_util.default))
我得到的输出为
{"Reg": "11ts", "_id": {"$oid": "55a5e988545779f35d3ecdf4"}, "Name": "Alex"}{"Reg": "12ts", "_id": {"$oid": "55a5eac6545779f35d3ecdf5"}, "Name": "asdf"}
当使用dumps[{"data":document}]
时,我得到的输出是
[{"data": {"Name": "asdf", "Reg": "asdfs", "_id": {"$oid": "55a5e988545779f35d3ecdf4"}}}]
[{"data": {"Name": "qwer", "Reg": "asdff", "_id": {"$oid": "55a5eac6545779f35d3ecdf5"}}}]
但是我想要类似这样的输出结果。
{"data": [{"Name": "asdf", "Reg": "asdfs", "_id": {"$oid": "55a5e988545779f35d3ecdf4"}},{"Name": "qwer", "Reg": "asdff", "_id": {"$oid": "55a5eac6545779f35d3ecdf5"}}]}
如果我做错了什么,请告诉我,我不知道该怎么做。
class JSONEncoder
来解决序列化器问题。 - Tony Roczzjson.dumps()
的问题,那么现在也许不需要费心思考这个了。 - l'L'l