【问题标题】:pyramid: load a file of json and send part of the json object金字塔:加载一个json文件并发送部分json对象
【发布时间】:2018-08-19 14:21:13
【问题描述】:

我想从 mongo 查询中加载一个 JSON 对象,访问该对象的一部分,然后将其序列化并发送到 Web 客户端。我可以让 web 客户端工作而不是 python 端。任何例子都会很棒..

请求是这样的序列化 JSON 对象

{"page":"home"}

mongo 查询结果会是这样,但是每个“home”、“hello”等都有更多的键和值。

{ "_id" : ObjectId("5a8838782430d5ae7526e9eb"), "home" : { "next_page" : "/stats"}, "hello" : { "next_page" : "/home" }, "stats" : { "next_page" : "/hello" } }

views.py 代码包含这个,我将其作为伪代码提供。

@view_config(route_name='nav_route', renderer='json')
    def content(request):
        page_name=request.page              #that is, I want page_name="home"
        mongo_json=mongo_query(woof)        #load and parse the above query
        page_nav=mongo_json[page_name]      #get the part for "home"
        return {'nav': page_nav}

更新:有了反馈,现在可以使用了 - 干杯!

@view_config(route_name='rachel_content', renderer='json')
def rachel_content(request):
    page=request.json_body['page']
    result=db.rachel.find_one()
    return { 'rachel' : json.dumps(result[page])}

(雷切尔以复制人的名字命名)

【问题讨论】:

    标签: python json mongodb pyramid wsgi


    【解决方案1】:

    我建议您只需要转储 JSON 数据。我倾向于默认使用 simplejson 包,因此会将其添加到文件顶部。

    import simplejson as json
    

    然后简单地告诉它使用dumps 函数将您的字典对象转储为 JSON 字符串:

    return {'nav': json.dumps(page_nav)}
    

    如果您不想/不能安装 simplejson,我相信您可以使用 built-in JSON library 做同样的事情

    【讨论】:

    • 在这种情况下 json.dumps() 的目的是什么,考虑到输出无论如何都会转换为 json? JSON 中的 JSON 更像是 Inception,而 @Craig 是
    • ...而@Craig 更喜欢《银翼杀手》主题 :)
    • @Sergey 你是完全正确的。我错过了代码已经在输出中使用 JSON 渲染器的事实。我猜如果它有效,那么调用元素期望它被双重编码。
    猜你喜欢
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 2015-05-20
    • 2017-12-13
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    相关资源
    最近更新 更多