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

Line Flex Message JSON文件导入Python的其他可行方法咨询

导入Line Flex Message的替代方案

给你几个不用纠结原来编码和JSON解析错误的导入方法:

方法1:把JSON改成Python模块直接导入

把你的Flex Message内容存成flex_message.py,内容改成Python字典格式(删掉开头的flex_message=,只留字典本身):

flex_message_dict = {
    "type": "bubble",
    "header": {
        # 这里放完整的Flex结构内容
        "text": "{}, {}筆".format(p2_2,u),
        # 其他部分保持不变
    }
}

然后在你的主程序里直接导入使用:

from flex_message import flex_message_dict
from linebot.models import FlexSendMessage

flex_message = FlexSendMessage.new_from_json_dict(flex_message_dict)
line_bot_api.reply_message(tk, flex_message)

这种方式能直接保留Python的字符串格式化语法,完全绕开JSON的格式限制。

方法2:用ast.literal_eval()读取文件

要是想保留.json后缀,先把文件里的flex_message=删掉,只留纯字典内容,然后用ast.literal_eval()来解析:

import ast
from linebot.models import FlexSendMessage

with open('flex_message.json', 'r', encoding='utf-8') as f:
    content = f.read()
flex_message_dict = ast.literal_eval(content)

flex_message = FlexSendMessage.new_from_json_dict(flex_message_dict)
line_bot_api.reply_message(tk, flex_message)

ast.literal_eval()比json.load()宽松得多,能识别Python的格式化语法,不会因为JSON的严格校验报错。

方法3:先替换变量再转字典

如果你的Flex里有很多动态变量要填充,可以先读文件内容成字符串,替换变量后再转字典:

import json
from linebot.models import FlexSendMessage

# 先定义好所有需要替换的变量
p2_2 = "你的内容"
u = 15
maxC_price = 6000000
# 其他变量按需定义...

with open('flex_message.json', 'r', encoding='utf-8') as f:
    content = f.read().replace('flex_message=', '')  # 去掉开头的赋值语句
# 把所有变量占位符替换成实际值
content = content.format(p2_2=p2_2, u=u, maxC_price=maxC_price, minC_price=minC_price, meanC_price=meanC_price, p2_1=p2_1, p2_3=p2_3, p2_4=p2_4, p2_0=p2_0)
flex_message_dict = json.loads(content)

flex_message = FlexSendMessage.new_from_json_dict(flex_message_dict)
line_bot_api.reply_message(tk, flex_message)

这种方式先把动态内容填好,再用标准JSON解析,适合需要频繁更新变量的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:45:36