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

标签 json export-to-csv

我正在将 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)。因此,您正在将压缩文本的大小与您正在创建的平面文本进行比较。压缩您正在创建的文件,您将把它缩小到几乎相同的大小(取决于压缩工具和设置)。

关于json - 为什么 JSON 文件比具有相同内容的 .txt 文件小很多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48313216/

相关文章:

json - 如何使用 jsonpb 将 JSON 解码为包含一个定义的 protobuf?

用于重新格式化 JSON key 的 Java 工具

node.js - 将数组导出到 csv Nodejs

r - 将数值向量作为字符导出到 CSV

javascript - 将对象下载为格式化的 JSON 文件

jquery - 使用 json 将选项标记为在多选中选择

python - 如何在Python中将json文件解析为DataFrame

python - 将 CSV 中的列编码为 Base64

python - 如何在python中比较两个列表列表,然后将数据写入excel

excel - 如何以特定格式将数据从数据透视表导出到 .csv?