2017-02-17 115 views
0

我在理解jsonify的工作原理时遇到了一些麻烦,即使我阅读了文档。正如你可以在下面看到的,我打电话给返回字典的lookup()函数,然后我试图对它进行jsonify。烧瓶 - 正确使用jsonify

@app.route("/articles") 
def articles(): 

    a = lookup(33496) 
    return jsonify([link=a["link"], title = a["title"]])  #invalid syntax error 

helpers.py

import feedparser 
import urllib.parse 

def lookup(geo): 
    """Looks up articles for geo."""  #this function already parses the 'link' and 'title' form rss feed 

    # check cache for geo 
    if geo in lookup.cache: 
     return lookup.cache[geo] 

    # get feed from Google 
    feed = feedparser.parse("http://news.google.com/news?geo={}&output=rss".format(urllib.parse.quote(geo, safe=""))) 

    # if no items in feed, get feed from Onion 
    if not feed["items"]: 
     feed = feedparser.parse("http://www.theonion.com/feeds/rss") 

    # cache results 
    lookup.cache[geo] = [{"link": item["link"], "title": item["title"]} for item in feed["items"]] 

    # return results 
    return lookup.cache[geo] 

# initialize cache 
lookup.cache = {} 

是我得到的错误是无效的语法。任何想法到我做错了什么?谢谢

回答

1

我觉得你dict语法是错误的。您可以在official documentation中阅读更多内容。

,我认为你正在试图为如下代码:

@app.route("/articles") 
def articles(): 
    a = lookup(33496) 
    return jsonify({"link" : a["link"], "title" : a["title"]}) 

具体来说,你应该使用,而不是括号({})和结肠(:)而不是等号大括号。

另一种选择是让jsonify()做转换(如在对方的回答中指出):

@app.route("/articles") 
def articles(): 
    a = lookup(33496) 
    return jsonify(link = a["link"], title = a["title"]) 

不过,我想你会被建议使用创建dict。当您需要创建更大的JSON对象时,它变得更加灵活。

希望这会有所帮助。

+0

然后,如果您需要明确地转换为json,那么jsonify的目的是什么? – tadm123

+0

是@Jari,问题是我已经使用'jsonify()'指出了它的编辑方式,但是我收到了一些语法错误。 – tadm123

+0

我现在尝试使用你的第一个例子,我也得到了错误。嗯 – tadm123