update pay function
This commit is contained in:
@@ -240,6 +240,60 @@ export const MarkdownWithCharts = ({ content, variant = 'auto' }) => {
|
|||||||
// 移除可能的前后空白和不可见字符
|
// 移除可能的前后空白和不可见字符
|
||||||
cleanContent = cleanContent.replace(/^\s+|\s+$/g, '');
|
cleanContent = cleanContent.replace(/^\s+|\s+$/g, '');
|
||||||
|
|
||||||
|
// 检查 JSON 是否完整并尝试修复
|
||||||
|
// 使用栈来跟踪括号,确保正确的闭合顺序
|
||||||
|
const stack = [];
|
||||||
|
let inString = false;
|
||||||
|
let escape = false;
|
||||||
|
|
||||||
|
for (let i = 0; i < cleanContent.length; i++) {
|
||||||
|
const char = cleanContent[i];
|
||||||
|
|
||||||
|
if (escape) {
|
||||||
|
escape = false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (char === '\\' && inString) {
|
||||||
|
escape = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (char === '"') {
|
||||||
|
inString = !inString;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inString) continue;
|
||||||
|
|
||||||
|
if (char === '{' || char === '[') {
|
||||||
|
stack.push(char);
|
||||||
|
} else if (char === '}') {
|
||||||
|
if (stack.length > 0 && stack[stack.length - 1] === '{') {
|
||||||
|
stack.pop();
|
||||||
|
}
|
||||||
|
} else if (char === ']') {
|
||||||
|
if (stack.length > 0 && stack[stack.length - 1] === '[') {
|
||||||
|
stack.pop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果栈不为空,说明有未闭合的括号,需要补全
|
||||||
|
if (stack.length > 0) {
|
||||||
|
logger.warn('检测到不完整的 ECharts JSON,尝试修复', {
|
||||||
|
unclosed: stack.join(''),
|
||||||
|
});
|
||||||
|
|
||||||
|
// 按照栈的逆序补全闭合括号
|
||||||
|
while (stack.length > 0) {
|
||||||
|
const open = stack.pop();
|
||||||
|
cleanContent += open === '{' ? '}' : ']';
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.info('ECharts JSON 已修复');
|
||||||
|
}
|
||||||
|
|
||||||
// 尝试解析 JSON
|
// 尝试解析 JSON
|
||||||
const chartOption = JSON.parse(cleanContent);
|
const chartOption = JSON.parse(cleanContent);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user