2014-09-22 59 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