在Flask中解析嵌套的JSON

horcle_buzz

我有一个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”,但这不是点击了什么,我需要根据我的嵌套结构做。

cuducos

您具有访问权限并且可以编辑JSON吗?

进行一些编辑将有助于使其成为有效的JSON:

  1. 对键和值使用双引号
  2. 使用{打开和关闭JSON}
  3. 删除尾随,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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Flask中解析嵌套的JSON

来自分类Dev

解析JSON中的嵌套值

来自分类Dev

在Elm中解析嵌套的JSON

来自分类Dev

Logstash中的嵌套JSON解析

来自分类Dev

iOS中的嵌套JSON解析

来自分类Dev

在 php 中解析嵌套的 JSON

来自分类Dev

解析dict中的嵌套键(从json生成)

来自分类Dev

在Node.js中解析嵌套的JSON

来自分类Dev

可以解析sumologic中的嵌套json吗?

来自分类Dev

在Java中解析嵌套的json数组

来自分类Dev

在android中解析json嵌套数组

来自分类Dev

在 Swift 中解析嵌套的 JSON 数组

来自分类Dev

如何从双重嵌套响应中解析 JSON

来自分类Dev

解析 Xamarin 表单中的嵌套 JSon 文件

来自分类Dev

如何解析flask中的json数据?

来自分类Dev

解析嵌套的JSON数据

来自分类Dev

JSON嵌套解析

来自分类Dev

解析嵌套的JSON

来自分类Dev

嵌套JSON解析

来自分类Dev

在Ansible中解析JSON输出以在嵌套显示中显示信息

来自分类Dev

从Flask中的mysql解析json以从记录中获取字段

来自分类Dev

如何在Spark SQL中解析嵌套的JSON对象?

来自分类Dev

从JSON解析嵌套的值,然后添加到HashMap中

来自分类Dev

如何在Android中解析嵌套的JSON数组

来自分类Dev

如何解析python中的json嵌套字典?

来自分类Dev

将嵌套的JSON解析为R中的数据框

来自分类Dev

以特定方式解析Excel中的JSON嵌套数组

来自分类Dev

将JSON(在嵌套键值中)解析为CSV

来自分类Dev

解析并在Android中存储嵌套的JSON数据