[英]Python pretty printing JSON from API to a file
我从使用Python的API中获取了一些数据,并且正在尝试将其打印到文件中。 我的理解是, indent
参数使您可以轻松打印。 这是我的代码:
import urllib2, json
APIKEY_VALUE = "APIKEY"
APIKEY = "?hapikey=" + APIKEY_VALUE
HS_API_URL = "http://api.hubapi.com"
def getInfo():
xulr = "/engagements/v1/engagements/paged"
url = HS_API_URL + xulr + APIKEY + params
response = urllib2.urlopen(url).read()
with open("hubdataJS.json", "w") as outfile:
json.dump(response, outfile, sort_keys=True, indent=4, ensure_ascii=False)
getInfo()
当我在Sublime文本中打开hubdataJS.json
,我期望hubdataJS.json
看起来像是一些JSON,其格式如下:
{
a: some data
b: [
some list of data,
more data
]
c: some other data
}
相反,我得到的是所有数据都用引号引起来(我认为dumps
是作为字符串输出),其中包含许多\\
, \\r
s和\\n
s。
对我做错了感到困惑。
在您的代码中, response
是一个字节字符串,其中包含以json格式序列化的数据。 当您执行json.dump
您正在将字符串序列化为json。 您最终得到一个包含字符串的json格式的文件,并且在该字符串中,您还有另一个json数据,因此json内的json。
为了解决这个问题,您必须先解码(反序列化)从互联网获得的字节串数据,然后再将其重新编码为json才能写入文件。
response = json.load(urllib2.urlopen(url))
它将把来自网络的序列化数据转换成真实的python对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.