test-json-fix.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // 测试JSON修复功能
  2. import { validateAndFixJSON } from './src/api/yjbdc/aiController.js';
  3. // 测试用例
  4. const testCases = [
  5. // 正常JSON
  6. {
  7. name: "正常JSON",
  8. input: '{"name":"test","value":123}'
  9. },
  10. // Markdown代码块包裹的JSON
  11. {
  12. name: "Markdown代码块",
  13. input: '```json\n{"name":"test","value":123}\n```'
  14. },
  15. // 带有语法错误的JSON
  16. {
  17. name: "语法错误JSON",
  18. input: '{name:"test",value:123}'
  19. },
  20. // 混合问题
  21. {
  22. name: "混合问题",
  23. input: '```json\n{name:"test",value:123}\n```'
  24. },
  25. // 非JSON内容中包含JSON对象
  26. {
  27. name: "非JSON内容中包含JSON对象",
  28. input: '这是一段文本,其中包含JSON:{"name":"test","value":123},后面还有其他内容'
  29. },
  30. // 阿里云通义千问可能返回的格式
  31. {
  32. name: "阿里云通义千问返回格式",
  33. input: '```json\n{\n "title": "测试文章",\n "content": "这是一篇测试文章",\n "author": "AI助手",\n "date": "2023-07-15"\n}\n```'
  34. }
  35. ];
  36. // 运行测试
  37. console.log("开始测试JSON修复功能...\n");
  38. testCases.forEach(testCase => {
  39. console.log(`测试用例: ${testCase.name}`);
  40. console.log(`输入: ${testCase.input}`);
  41. try {
  42. const fixed = validateAndFixJSON(testCase.input);
  43. console.log(`修复后: ${fixed}`);
  44. try {
  45. const parsed = JSON.parse(fixed);
  46. console.log(`解析结果: ${JSON.stringify(parsed, null, 2)}`);
  47. console.log("✅ 测试通过\n");
  48. } catch (error) {
  49. console.error(`❌ 修复后仍无法解析: ${error.message}\n`);
  50. }
  51. } catch (error) {
  52. console.error(`❌ 修复过程出错: ${error.message}\n`);
  53. }
  54. });
  55. console.log("测试完成");