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

为什么JSON文件比具有相同内容的.txt文件小得多?,json,export-to-csv,Json,Export To Csv,我正在将JSON文件(从ajax调用)转换为CSV 当JSON文件发送给我时,它是80kb 当我将JSON文件的内容保存到.txt文件中时,它变成了291kb 将.txt文件转换为.csv文件后,其大小为240kb 我从ajax调用中收到的JSON文件如何比我用相同内容创建的.txt文件小得多?有没有办法减少最终产品的尺寸 编辑: 这就是我获取文件大小的方式 我找到AJAX请求,并检查其文件大小。正如你所看到的,它大约是80kb 我复制了请求的来源 然后我将源代码复制并粘贴到一个空白的.txt文

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

当JSON文件发送给我时,它是80kb

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

将.txt文件转换为.csv文件后,其大小为240kb

我从ajax调用中收到的JSON文件如何比我用相同内容创建的.txt文件小得多?有没有办法减少最终产品的尺寸

编辑:

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

  • 我找到AJAX请求,并检查其文件大小。正如你所看到的,它大约是80kb
  • 我复制了请求的来源
  • 然后我将源代码复制并粘贴到一个空白的.txt文件中。结果是一个大小为291KB的.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
    导入csv
    进口稀土
    将open('jjj.txt')作为f:
    f=f.read()
    parsed=json.loads(f)
    unix\u time=re.compile(r'(\d\d\d\d\d\d\d\d\d\d\d\d\d\d))
    数据=已分析['d']['tables'][0]['rows']
    对于数据中的i:
    对于范围内的a(len(i)):
    如果a>39且a<46:
    如果我[a]!=无:
    mo=unix\u time.search(i[a])
    i[a]=mo.group(1)
    文件=打开('json.csv','w',换行符='')
    csvwriter=csv.writer(文件)
    csvwriter.writerows(数据)
    
    JSON是一种主要用于通信的字符串格式。如果我们想将JSON字符串保存在一个文件中,它将是一个文本文件。在这种情况下,JSON和文本文件的任何其他内容之间没有区别


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

    使用什么工具转换文件?从哪里获得文件大小?如果不1)查看代码,2)查看示例输入和3)查看示例输出,则无法回答此问题。我们对你的应用程序或代码一无所知。所以这里发布的任何东西都只是一个猜测。你的JSON可能已经被压缩了。请参阅浏览器开发人员控制台中的“网络”选项卡。抱歉,我缺少信息。我发布了检索JSON文件的步骤,以及从.txt到.csv的转换代码。@AntiMoron也许我应该选择其他措辞。读我第二段的第一句话,我觉得它更清楚。我将删除你提到的第一句话。你是对的。当我压缩
    jjj.txt
    时,它变成了74kb。这太棒了,但我无法将zip文件转换为csv文件。有没有办法创建一个csv文件,该文件包含相同的数据,但压缩到约80kb大小?我不知道为什么要将JSON字符串保存到一个名为csv的文件中。不管怎样,文本文件通常压缩70-80%,这就是你得到的。不,据我所知,没有办法压缩一个文本文件(JSON、CSV或其他文件),而实际上。。。。嗯,创建一个压缩文件。有些工具隐藏了压缩,所以你看不到它,但这并不能改变事实。例如,如果您使用压缩硬盘,它上的所有文件都会在您看不到的情况下自动压缩和解压缩。告诉我们你想做什么,我们会帮助你。@RacilHilan我正在抓取另一个网站的数据库(我称之为“他们”),并将其存储在我自己网站的数据库中。他们通过JSON文件和ajax调用传输数据。为了将他们的记录添加到我自己的数据库中,我需要将他们的JSON文件转换为CSV文件。有数百GB的数据要添加,所以我希望CSV文件尽可能小。这不是所谓的网站抓取。您只是在使用他们的API(假设他们有意将其公开)。您应该处理返回的JSON字符串,并将其保存在真实的数据库中,而不是文本CSV文件中。这样做会使你的问题变得无关紧要。