代码之家  ›  专栏  ›  技术社区  ›  Giovanni Di Milia

Webpy:如何服务JSON

  •  21
  • Giovanni Di Milia  · 技术社区  · 14 年前

    是否可以使用Webpy服务JSON? 我建立了我的网站,我需要在JSON中提供一些信息,以便在某些页面上与JavaScript交互。

    我试图在文档中寻找答案,但找不到任何答案。

    谢谢, 乔凡尼

    2 回复  |  直到 13 年前
        1
  •  60
  •   Mark    14 年前

    我认为您不必为web.py服务JSON做任何过于“特殊”的事情。

    import web
    import json
    
    class index:
        def GET(self):
            pyDict = {'one':1,'two':2}
            web.header('Content-Type', 'application/json')
            return json.dumps(pyDict)
    
        2
  •  -6
  •   George Lambert    14 年前

    当然可以从Webpy服务JSON,但是如果您选择一个框架,我将查看Starlight和我的fork twilight(文档)。

    它有一个JSON包装器,用于修复JSON响应的HTTP头。

    它使用JSON或SimpleJSON库来处理与其他对象之间的转换。

    我现在正在使用它,它很好。

    https://bitbucket.org/marchon/twilight

    在其中,您将看到一个名为showMetejson.py的示例。

    使用简单的JSON

    from starlight import *
    from werkzeug.routing import Map
    from werkzeug.routing import RuleFactory
    
    import simplejson
    
    
    class ShowMeTheResponses(App):
    
    ####################################################################
    #
    #   Sample URLS to Test Responses 
    #
    #   http://localhost:8080/                root
    #
    #   http://localhost:8080/json            return JSON Mime Type Doc  
    #
    ###################################################################
    
    
    
       @default
       def hello(self):
           return 'Hello, world!'
    
       @dispatch('/')
       def index(self): 
           return 'Hello Root!'
    
       @dispatch('/html')
       def indexhtml(self): 
           return HTML('Hello HTML')
    
       @dispatch('/json')
       def indexjson(self):
           directions = {'N' : 'North', 'S' : 'South', 'E':'East', 'W' : 'West'}
           return JSON(simplejson.dumps(directions))         
    
    
    if __name__ == '__main__':
        from werkzeug import run_simple
        run_simple('localhost', 8080, ShowMeTheResponses())