我从函数中得到了这个JSON:
output = user_schema.dump(users).data
output = json.dumps([dict(r) for r in output], default=alchemyencoder)
print output
return jsonify({'user' : output})
alchemyencode看起来像这样:
def alchemyencoder(obj):
"""JSON encoder function for SQLAlchemy special classes."""
if isinstance(obj, datetime.date):
return obj.isoformat()
elif isinstance(obj, decimal.Decimal):
return float(obj)
我的输出如下:
{ "user": "[{\"latitude\": 28.6167, \"admin_name1\": \"New Delhi\", \"key\": \"IN/110051\", \"longitude\": 77.2167, \"place_name\": \"Azad Nagar\"}]" }
我想从输出中删除\“并美化我的JSON看起来像这样:
user:
{
latitude : 23.233,
longitude :24.223,
place : "xyz"
}
答案 0 :(得分:2)
你的问题是:
output = json.dumps([dict(r) for r in output], default=alchemyencoder)
已经创建了一个JSON字符串。
然后将该json字符串放在dict
中,然后再次序列化:
return jsonify({'user' : output})
这些反斜杠转义是必要的,因为结果:
{ "user": "[{\"latitude\": 28.6167, \"admin_name1\": \"New Delhi\", \"key\": \"IN/110051\", \"longitude\": 77.2167, \"place_name\": \"Azad Nagar\"}]" }
JSON对象是一个键值对,用户和字符串,而不是JSON对象数组。
只需忽略json.dumps
行,只需返回:
return json.dumps({'user':[dict(r) for r in output]}, default=alchemyencoder)
答案 1 :(得分:1)
import json
# Using the string provided in your example
j = '{ "user": "[{\"latitude\": 28.6167, \"admin_name1\": \"New Delhi\", \"key\": \"IN/110051\", \"longitude\": 77.2167, \"place_name\": \"Azad Nagar\"}]" }'
j = j.replace('"[','[').replace(']"',']')
print(json.dumps(json.loads(j), indent=2))
{
"user": [
{
"latitude": 28.6167,
"admin_name1": "New Delhi",
"key": "IN/110051",
"longitude": 77.2167,
"place_name": "Azad Nagar"
}
]
}