为什么 JSON 文件比具有相同内容的 .txt 文件小很多?

Why is a JSON file so much smaller than a .txt file with the same content?

我正在将 JSON 文件(来自 ajax 调用)转换为 CSV。

JSON文件发给我的时候是80kb。

当我将JSON文件的内容保存到一个.txt文件中时,它变成了291kb!

将.txt文件转换为.csv文件后,为240kb。

我从 ajax 调用中收到的 JSON 文件怎么比我用相同内容创建的 .txt 文件小得多?有什么方法可以减小最终产品的尺寸吗?

编辑:

这就是我获取文件大小的方式。

  1. 我找到了 AJAX 请求,并检查了它的文件大小。 Link。可以看到,大概有80kb。
  2. 我复制了请求的来源。 Link.
  3. 然后我将源代码复制并粘贴到一个空白的 .txt 文件中。结果是一个大小为 291 kb 的 .txt 文件。

编辑:

我认为 .txt 到 .csv 的转换问题不是问题,但这是我的代码:

import json
import csv
import re

with open('jjj.txt') as f:
    f = f.read()

parsed = json.loads(f)
unix_time = re.compile(r'(\d\d\d\d\d\d\d\d\d\d\d\d\d)')

data = parsed['d']['tables'][0]['rows']
for i in data:
    for a in range(len(i)):
        if a > 39 and a < 46:
            if i[a] != None:
                mo = unix_time.search(i[a])
                i[a] = mo.group(1)


file = open('json.csv', 'w', newline='')
csvwriter = csv.writer(file)
csvwriter.writerows(data)

JSON 是一种主要用于通信的字符串格式。如果我们要将 JSON 字符串保存在文件中,它将是一个文本文件。在这种情况下,JSON 或文本文件的任何其他内容都没有区别。

您从 Ajax 调用中收到 JSON 字符串,而不是 JSON 文件。您通过 HTTP 接收它,并且它是压缩的 (g-zipped)。因此,您正在将压缩文本的大小与您正在创建的平面文本进行比较。压缩您正在创建的文件,您将把它缩小到几乎相同的大小(取决于压缩工具和设置)。