You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python写入JS文件时如何避免var LIST_DATA带引号?GitHub API解析器求助

解决JS文件生成时变量声明带多余引号的问题

看起来你是在生成JS变量文件时不小心把整个声明语句都转成字符串了,我来帮你搞定这个问题~

问题根源

你遇到的情况,大概率是把var LIST_DATA = 这个变量声明部分也当成了JSON数据的一部分去序列化(比如用json.dumps处理整个语句),或者在字符串拼接时错误地多套了一层引号,导致最终写入文件时连变量名都被加上了引号。

正确的实现步骤

我们需要把「JS变量声明」和「JSON数据内容」分开处理,再拼接成完整的JS代码:

  1. 单独处理数据部分的JSON序列化
    先把从GitHub API获取到的列表数据转成合法的JSON字符串:

    import json
    
    # 假设这是你从API拿到并处理好的数据
    api_data = [{"name": "Python", "type": "category"}]
    # 把数据转成标准JSON字符串(indent参数可选,让输出更易读)
    json_content = json.dumps(api_data, indent=2)
    
  2. 拼接完整的JS代码
    把变量声明和JSON内容直接拼接成JS语句,不需要额外加引号:

    js_code = f"var LIST_DATA = {json_content};"
    
  3. 写入文件
    直接把拼接好的JS代码写入文件,不要对整个js_code做序列化操作:

    with open("output.js", "w", encoding="utf-8") as f:
        f.write(js_code)
    

完整示例脚本

这里给你一个包含API请求和文件生成的完整例子:

import json
import requests

def fetch_github_categories():
    # 替换成你实际调用的GitHub API接口
    api_url = "https://api.github.com/your-target-endpoint"
    try:
        response = requests.get(api_url)
        response.raise_for_status()  # 捕获请求错误
        # 这里根据API返回结构,处理成你需要的[{name:..., type:...}]格式
        raw_data = response.json()
        processed_data = [{"name": item["name"], "type": "category"} for item in raw_data]
        return processed_data
    except Exception as e:
        print(f"获取API数据失败: {e}")
        return []

def generate_output_js():
    data = fetch_github_categories()
    if not data:
        print("没有可生成的数据")
        return
    
    json_str = json.dumps(data, indent=2)
    js_content = f"var LIST_DATA = {json_str};"
    
    with open("output.js", "w", encoding="utf-8") as f:
        f.write(js_content)
    print("output.js生成成功!")

if __name__ == "__main__":
    generate_output_js()

验证结果

运行脚本后,output.js的内容会和你期望的一致:

var LIST_DATA = [
  {
    "name": "Python",
    "type": "category"
  }
];

内容的提问来源于stack exchange,提问作者Yu Zhou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:17:50