我有一个REST API端点,需要在其中解析格式的传入嵌套JSON:
site: {
id: '37251',
site_name: 'TestSite',
address: {
'address': '1234 Blaisdell Ave',
'city': 'Minneapolis',
'state': 'MN',
'zip': '55456',
'neighborhood': 'Kingfield',
'county': 'Hennepin',
},
geolocation: {
latitude : '41.6544',
longitude : '73.3322',
accuracy: '45'
}
}
进入以下SQLAlchemy类:
地点:
class Site(db.Model):
__tablename__ = 'site'
id = Column(Integer, primary_key=True, autoincrement=True)
site_name = Column(String(80))# does site have a formal name
address_id = Column(Integer, ForeignKey('address.id'))
address = relationship("Address", backref=backref("site", uselist=False))
geoposition_id = Column(Integer, ForeignKey('geoposition.id'))
geoposition = relationship("Geoposition", backref=backref("site", uselist=False))
evaluations = relationship("Evaluation", backref="site")
site_maintainers = relationship("SiteMaintainer", backref="site")
地址(一个站点有一个地址):
class Address(db.Model):
__tablename__ = 'address'
id = Column(Integer, primary_key=True, autoincrement=True)
address = Column(String(80))
city = Column(String(80))
state = Column(String(2))
zip = Column(String(5))
neighborhood = Column(String(80))
county = Column(String(80))
和地理位置(一个站点有一个地理位置):
class Geoposition(db.Model):
__tablename__ = 'geoposition'
id = Column(Integer, primary_key=True, autoincrement=True)
site_id = Column(Integer)
latitude = Column(Float(20))
longitude = Column(Float(20))
accuracy = Column(Float(20))
timestamp = Column(DateTime)
将SQLAlchemey数据导入JSON很容易,但是我需要从请求中解析JSON,以便可以附加/更新通过POST发送到RESTful API的数据。我知道如何处理非嵌套的JSON,但是我将第一个承认我对处理属于关系结构中多个表的记录的嵌套JSON毫无头绪。
我已经尝试过为此寻找高低没有任何运气。最近的我能找到的是这里的“嵌套验证与烧瓶宁静RequestParser”,但这不是点击了什么,我需要根据我的嵌套结构做。
您具有访问权限并且可以编辑JSON吗?
进行一些编辑将有助于使其成为有效的JSON:
{
和打开和关闭JSON}
,
的country
行如果可以的话,JSON将如下所示:
{
"site": {
"id": "37251",
"site_name": "TestSite",
"address": {
"address": "1234BlaisdellAve",
"city": "Minneapolis",
"state": "MN",
"zip": "55456",
"neighborhood": "Kingfield",
"county": "Hennepin"
},
"geolocation": {
"latitude": "41.6544",
"longitude": "73.3322",
"accuracy": "45"
}
}
}
整理出来,使用Pythonjson
处理:
import json
file_handler = open('test.json', 'r')
parsed_data = json.loads(file_handler.read())
print parsed_data
输出是一个数字,您可以轻松地对其进行迭代以验证数据:
{u'site': {u'geolocation': {u'latitude': u'41.6544', u'longitude': u'73.3322', u'accuracy': u'45'}, u'site_name': u'TestSite', u'id': u'37251', u'address': {u'city': u'Minneapolis', u'neighborhood': u'Kingfield', u'zip': u'55456', u'county': u'Hennepin', u'state': u'MN', u'address': u'1234BlaisdellAve'}}}
但是,如果您无法编辑JSON来改善其语法,json.loads
就不会解析它……
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句