【发布时间】:2015-02-20 04:08:03
【问题描述】:
我有一个 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 时一无所知的人。
我已经尝试过搜索这个,没有任何运气。我能找到的最接近的是here“使用flask-restful RequestParser 进行嵌套验证”,但这并不是根据我的嵌套结构点击我需要做的事情。
【问题讨论】:
标签: json rest parsing flask flask-sqlalchemy