【技巧】将json数据转换成美观的excel数据表
评论
收藏

【技巧】将json数据转换成美观的excel数据表

经验分享
晴天
2024-08-04 22:28·浏览量:2200
晴天
发布于 2024-08-04 22:03更新于 2024-08-04 22:282200浏览

一、📋需求分析

最近有小伙伴想要获取京东商品目录,然后保存成右侧这个excel数据格式。目录的数据倒是很容易获取,但是要保存成右侧excel的数据格式,就有点犯难了。


获取京东商品目录直接请求下面这个网址就可以获取全部数据,取getCategoryCallback里面的文本就可以获取京东完整的目录json数据。

https://dc.3.cn/category/get?&callback=getCategoryCallback


经过格式化后,呈现的json数据效果如下:


二、💡实现思路

要把json数据按照其商品目录层级结构逐列递进写入到excel中,需要解决2个问题

① 商品名称前后有很多不需要的链接,需要去除,只保留商品名称;

   解决方法:通过正则匹配和替换掉不需要的链接地址


② json数据转换成excel商品目录,需要严格按照商品的层级关系写入对应的列;

    解决方法:通过pandas或第三方工具或平台来实现数据转换



三、👣具体步骤

步骤一:正则替换多余的链接和分隔符

1. 正则替换多余链接

(感谢@鹿秋夏 更优化的匹配方法🫰🩷)

[a-zA-Z0-9.-]+[\.\/][^\s|]+


2. 正则替换多余的"|"等分隔符

\|\d?


步骤二:json数据转换成excel数据

1. 试试pandas库来实现

问了AI要了代码,简单封装后运行,实现是可以实现,不过实现的效果一言难尽~,效果如下图:

😂转换效果真的不堪入目!


2. ASPOSE平台的json转excel功能

简单搜索了下网络,测试了几个不同的平台后,发现ASPOSE平台的转换效果最好,而且是免费的,关键是请求都没有加密,可以直接拿到接口,转成API直接调用也没问题哈~

https://products.aspose.app/cells/zh/convert-json-to-excel


看了下该网站的请求后,做了几次调试后,让AI优化了下代码,就可以直接拿来用了!

import requests
import time

def json2excel(json_data):
    """
    将 JSON 数据转换为 Excel 文件并返回下载链接。

    Args:
        json_data: 要转换的 JSON 数据 (字符串格式)。

    Returns:
        转换后的 Excel 文件的下载链接,如果转换失败则返回 None。
    """
    url = "https://api.products.aspose.app/cells/conversion/api/ConversionApi/Convert?outputType=XLSX"

    payload = {
        "MultipleWorksheets": "true",
        "ConvertNumericOrDate": "true",
        "ArrayAsTable": "true",
        "UploadOptions": "json"
    }

    timestamp = str(int(time.time()))

    files = {
        timestamp: (
            'convert.json',
            json_data,
            'application/octet-stream'
        )
    }

    headers = {
        'accept': '*/*'
    }

    response = requests.post(url, headers=headers, data=payload, files=files)

    if response.status_code == 200:
        try:
            response_data = response.json()
            folder_name = response_data.get("FolderName")
            file_name = response_data.get("FileName")

            if folder_name and file_name:
                download_url = f"https://api.products.aspose.app/cells/conversion/api/Download/{folder_name}?file={file_name}"
                return download_url
            else:
                print("无法获取 FolderName 或 FileName")
                return None
        except ValueError:
            print("响应结果不是有效的 JSON 格式")
            return None
    else:
        print("请求失败:", response.status_code)
        return None

if __name__ == '__main__':

    # 示例用法:
    json_data='{"id":1,"name":"肉","detailsDto":[{"id":2859,"foodFourName":"羊肉","detailsColumn":"[性味]|[归经]|[功能]|[适用]","detailsContent":"性热。味甘。|脾、肾|暖中补虚,补中益气,开胃健力|1.虚劳恶冷2.五劳七伤"}]}'
    download_link = json2excel(json_data)

    if download_link:
        print("下载链接:", download_link)


直接扔给”魔法指令“,就可以直接生成转换指令拉,传入json文本数据,就可以返回excel文件的下载链接拉!



收藏5
全部评论1
最新
发布评论
评论