繁体   English   中英

Python漂亮地将JSON从API打印到文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM