В flask-restful
Я создал простой get
, который возвращает список записей в JSON.Почему возвращенный JSON понимается как unicode вместо списка?
resource_fields = {
'record_date': fields.String,
'rating': fields.Integer,
'notes': fields.String,
'last_updated': fields.DateTime,
}
class Records(Resource):
def get(self, email, password, last_sync_date):
user, em_login_provider = Rest_auth.authenticate(email, password)
resource_fields = {
'record_date': fields.String,
'rating': fields.Integer,
'notes': fields.String,
'last_updated': fields.DateTime,
}
m_records = []
if user:
try:
date = parser.parse(last_sync_date)
except:
#Never synced before - get all
recordsdb = Record.query(Record.user == user.key)
for record in recordsdb:
m_record = marshal(record, resource_fields);
m_records.append(m_record);
return json.dumps(m_records)
return {'data': 'none'}
Сейчас в тестовом модуле, после загрузки полученной строки в JSON парсер, я все еще получаю Юникод.
Как это:
[
{
"rating": 1,
"notes": null,
"last_updated": "Mon, 14 Oct 2013 20:56:09 -0000",
"record_date": "2013-10-14"
},
{
"rating": 2,
"notes": null,
"last_updated": "Mon, 14 Oct 2013 20:56:09 -0000",
"record_date": "2013-09-14"
}
]
Unit Test:
rv = self.app.get('/rest/records/{0}/{1}/{2}'.format(email, password, sync_date))
resp = json.loads(rv.data)
eq_(len(resp),2)
Но поскольку его юникода с 200-иш символов, а не список с двумя объектами, тест блок выходит из строя.
Любая идея, что мне не хватает, пожалуйста?
print repr(resp)
выводит это:
str: u'[{"rating": 1, "notes": null, "last_updated": "Mon, 14 Oct 2013 21:33:07 -0000", "record_date": "2013-10-14"}, {"rating": 2, "notes": null, "last_updated": "Mon, 14 Oct 2013 21:33:07 -0000", "record_date": "2013-09-14"}]'
Надеется, что это помогает
* Но поскольку его юникода с 200-иш символов, а не список с двумя объектами, тест блок не *. Можете ли вы показать нам, что такое 'print repr (resp)' is? Это звучит неправильно; ваш метод должен возвращать строку JSON, представляющую список. –
Конечно, я просто добавил. Спасибо – Houman
Это не то, что я просил вас предоставить, это ваш отказ в тестировании; что означает 'print repr (resp)' print? –