python - python将base64解码成json文件
问题描述
因此,我尝试压缩 JSON 文件并使用此代码(两个内置函数)
对其进行解压缩,压缩过程工作正常,但我不知道如何将其解压缩回 JSON,因此我可以向其附加更多项目。
这是我尝试过的:
path = r"mypath.json"
print(json_zip(path))
with open(path, "w") as f:
json.dump(json_zip(path), f, ensure_ascii=False, indent=4)
with open(path, "r") as f:
file_data = json.load(f)
print(json_unzip(file_data))
打印输出:
{'base64(zip(o))': 'eJwNyjEKgDAQBdGrLOn1AHYaUewEsftNiKuskawkInh7U80rxtgGWDOnDHTMSYBR9biY+iQvA4NEF31BN4sP5Voe9YGmuCuwObk+2tzjyOv9UUW2BGjrM2s0PzCOIWs='}
C:\Users\Beeri\Google Drive\Finance\BPicks\Stock Info\daily data copy - Copy\A.json
也许我没有正确理解解压缩的概念,但我希望 JSON 看起来像以前一样。JSON 本身看起来像这样:
[
{
"date": "2020-05-18 16:00:00",
"open": 83.79,
"low": 83.67,
"high": 83.79,
"close": 83.67,
"volume": 1855946
},
{
"date": "2020-05-18 15:59:00",
"open": 83.815,
"low": 83.77,
"high": 83.83,
"close": 83.79,
"volume": 1822469
},
{
"date": "2020-05-18 15:58:00",
"open": 83.9,
"low": 83.78,
"high": 83.9,
"close": 83.815,
"volume": 1803855
}
]
解决方案
根据您的代码:
>>> compressed_json = data['base64(zip(o))']
>>> decompressed_json = zlib.decompress(b64decode(compressed))
>>> decompressed_json
b'"C:\\\\Users\\\\Beeri\\\\Google Drive\\\\Finance\\\\BPicks\\\\Stock Info\\\\daily data copy - Copy\\\\A.json"'
>>> json.loads(decompressed_json)
'C:\\Users\\Beeri\\Google Drive\\Finance\\BPicks\\Stock Info\\daily data copy - Copy\\A.json'
正如卡尔所说,您基本上压缩了文件路径而不是实际文件:试试这个
import zlib, json
from base64 import b64encode, b64decode
path = r"filename.json"
def compress_json(data):
return {'base64(zip(o))': b64encode(zlib.compress(json.dumps(data).encode('utf-8'))).decode()}
def decompress_json(data):
compressed_json = data['base64(zip(o))']
return json.loads(zlib.decompress(b64decode(compressed_json)))
with open(path, "r") as f:
data = f.read()
compressed_json = compress_json(data)
print(compressed_json)
"""
{'base64(zip(o))': 'eJxTio7JUwCCaggFAjFKKYklqTFKVkCWkYGRga6Bqa6hhYKhmZW
BARDFKOkgq80vSM0DqbUw1jO3RJHJyS+HSpiZo0hkZKZnYNeSnJNfnIpdU1l+TmkuWM7QwtT
U0sQMIlmrQ7T7Ta1MLfG638LQFIcHzHF6wMIYpwfQ/IbsASMjEzNLcjxggdcDuMLf3AKX83EH
P3pgIDvfwBgYBVDnx+TFKgEASGiHCQ=='}
"""
decompressed_json = decompress_json(compressed_json)
print(decompressed_json)
"""
[
{
"date": "2020-05-18 16:00:00",
"open": 83.79,
"low": 83.67,
"high": 83.79,
"close": 83.67,
"volume": 1855946
},
{
"date": "2020-05-18 15:59:00",
"open": 83.815,
"low": 83.77,
"high": 83.83,
"close": 83.79,
"volume": 1822469
},
{
"date": "2020-05-18 15:58:00",
"open": 83.9,
"low": 83.78,
"high": 83.9,
"close": 83.815,
"volume": 1803855
}
]
"""
推荐阅读
- php - 卷曲亚马逊产品
- wordpress - WordPress:检查用户是否以重力形式解决测验
- ios - 更改 MKAnnotationView 图像 tintColor
- powerdns - PowerDNS with MySQL native configuration question on master/slave architecture question
- r - 如何使用 for 循环迭代一堆代码 15 年?
- c - 如何从串口读取数据?
- julia - julia 在 python 中是否具有与 hstack 等效的功能?
- r - 使用 R 导入文件数据
- python - 导入 numpy - ImportError:导入 mtrand 时 DLL 加载失败
- mysql - 为什么我需要在 My SQL Create Table 子句中指定“Engine=Innodb”?