2014-09-22 72 views
-1
#!/usr/bin/python 


import os 

import json 

import urllib 
import urllib2 

url = "https://www.example.com" 
parameters = {'resource': 'aaaa', 
     'apikey': '1111'} 
data = urllib.urlencode(parameters) 
req = urllib2.Request(url, data) 
response = urllib2.urlopen(req) 
json_data = response.read() 

with open("test.json") as json_file: 
    json_file.write(json_data) 

print json_data 

我看不到我再次使用json它是在json_data被使用之前。將json值打印到文件

+1

你爲什麼從JSON文件首先加載的數據呢?爲什麼你在這裏使用'json.load()'**。 – 2014-09-22 11:16:10

+0

它不在文件中嗎?我在這裏錯過了什麼? – 2014-09-22 11:25:48

+0

據推測,收到的JSON已經是有效的編碼JSON。爲什麼不把它寫入文件?無需在此編碼或解碼。 – 2014-09-22 11:32:11

回答

1

由於你已經有了JSON,

with open("test.json", "w") as f: 
    f.write(data) 

的另一件事,這裏要注意,你不應該有一個名爲json的變量,因爲

import json 
json = 'some string' 
json.dumps("{'a':1}") 
>> AttributeError: 'str' object has no attribute 'dumps' 

,如果你想要一個名爲json的變量,你可以使用import json as j

+0

@MartijnPieters謝謝,修改了答案。 – pad 2014-09-22 11:39:40

+0

@MartijnPieters我明白了。糾正。 – pad 2014-09-22 11:52:50

+0

以備參考:使用'io.open()'而不是'codecs.open()'; 'io'庫是Python 3中用來實現內置'open()'函數的功能,被反向移植到Python 2中,並且比'codecs.open()'文件對象更健壯和更好的設計。 – 2014-09-22 11:54:31

2

正如馬亭皮特斯指出,該數據已被編碼,所以你不應該需要的json模塊在所有在這種情況下

你可以只寫輸出到文件

json_data = response.read() 

with open("test.json" , "w") as json_file: 
    json_file.write(json_data) 
+0

@MartijnPieters當然..這是非常真實的 – GP89 2014-09-22 11:32:33