我正在使用MongoDB構建SPA(Angular)的python後端。
下面是我用:Python 3.4
,MongoDB 3
,Flask
,flask-mongoengine
和flask-restful
現在,我從我的後端收到以下JSON:
[
{
"_id": {
"$oid": "55c737029380f82fbf52eec3"
},
"created_at": {
"$date": 1439129906376
},
"desc": "Description.....",
"title": "This is title"
},
etc...
]
而且我希望收到類似的東西 :
[
{
"_id": "55c737029380f82fbf52eec3",
"created_at": 1439129906376,
"desc": "Description.....",
"title": "This is title"
},
etc...
]
My co德現在:
from flask import json
from vinnie import app
from flask_restful import Resource, Api
from vinnie.models.movie import Movie
api = Api(app)
class Movies(Resource):
def get(self):
movies = json.loads(Movie.objects().all().to_json())
return movies
api.add_resource(Movies, '/movies')
型號:
import datetime
from vinnie import db
class Movie(db.Document):
created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
title = db.StringField(max_length=255, required=True)
desc = db.StringField(required=True)
def __unicode__(self):
return self.title
什麼是格式化方便JSON用於前端的最佳方式?
那麼,爲什麼?實際上,這些標識符*「服務用途」*標識了您的最終應用*真正應該知道的「對象類型」。還有其他一些方法,並且已經可用的替代JSON序列化器將僅執行此操作,因爲對象上的一般「字符串化」方法將忽略導出時的這個「類型」信息。這裏的基本是使用標準的JSON庫lib' puts或'loads'而不是BSON變體。但是你會失去這樣做的有效信息。 –
在python中,大多數對象的toString方法將以$爲前綴返回對象屬性的值,即對於objectId,它將僅返回十六進制字符串,而不是具有包含十六進制字符串的$ id屬性的對象。做你想做的最簡單的方法是迭代檢測對象的字典,然後對它們進行必要的操作 – Sammaye
@Blakes Seven那麼,我如何獲得JSON而不是BSON? – bivo