2017-05-21 113 views
-2

我試着返回JSON,所以我可以將返回值存儲到變量但JSON變量獲取打印但不返回值。 或者還有其他方法可以將這些變量提取到除全局變量以外的其他函數。嘗試從函數返回JSON值打印但不是從函數返回

CODE

import json 
import urllib.request 

class Weather: 
    def set_api(self): 
     url = 'http://api.wunderground.com/api/8187218c2aca04ca/geolookup/conditions/q/IA/Cedar_Rapids.json' 
     f = urllib.request.urlopen(url) 
     json_string = f.read() 
     parsed_json = json.loads(json_string) 
     location = parsed_json['location']['city'] 
     temp_c = parsed_json['current_observation']['temp_c'] 
     print (location, temp_c)        #WORKING 
     return location,temp_c        #NOT WORKING 
     f.close() 

myweather = Weather() 
myweather.set_api() 

輸出

Cedar Rapids 10.2 #print output 
+0

嘗試使用'位置,temp_c = myweather.set_api()' – stamaimer

+0

另外'f.close()'從不執行。你應該使用'with'。 – DeepSpace

回答

-1

我固定的代碼它返回,但它具有保存在變量中,然後需要打印或傳送給其它功能。 其實我想整個JSON,以便根據需要我從列表字典中獲取必需的字段。

CODE
import json 
import urllib.request 

class Weather: 
    def set_api(self): 
     url = 'http://api.wunderground.com/api/8187218c2aca04ca/geolookup/conditions/q/IA/Cedar_Rapids.json' 
     f = urllib.request.urlopen(url) 
     json_string = f.read() 
     parsed_json = json.loads(json_string) 
     return parsed_json        
     f.close() 

myweather = Weather() 
yoweather = myweather.set_api() 
print(yoweather['location']['city'],yoweather['current_observation']['temp_c']) 

OUTPUT
Cedar Rapids 10.0 
1

要返回值,但將其丟棄。應該糾正爲。

myweather = Weather() 
location, temp_c = myweather.set_api() 

再見的方式,你的f.close不可達

return location,temp_c        # WORKING 
    f.close() 
+0

感謝您的建議。 –