agent.json.ts 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /**
  2. *
  3. 结果是:
  4. {
  5. "keshi":"呼吸科",
  6. "user":{
  7. "name":""
  8. }
  9. }
  10. */
  11. export function extactAndParseJsonFromString(inputString:string){
  12. let startIndex = inputString.indexOf("{")
  13. if(startIndex==-1) return {}
  14. let count = 0;
  15. let endIndex = startIndex;
  16. // 遍历字符串,计算花括号实现数量平衡
  17. for (let i = startIndex; i < inputString.length; i++) {
  18. // console.log(i,inputString[i])
  19. if(inputString[i]==="{"){
  20. count++;
  21. }else if(inputString[i]==="}"){
  22. count--;
  23. }
  24. // 当花括号平衡,我们找到了完整的JSON
  25. if(count === 0){
  26. endIndex = i;
  27. break;
  28. }
  29. }
  30. // 若不平衡
  31. if(count!=0) return {};
  32. // 提取JSON字符串,并解析
  33. const jsonString = inputString.slice(startIndex,endIndex+1);
  34. console.log("jsonString",jsonString)
  35. try{
  36. return JSON.parse(jsonString);
  37. }catch(error){
  38. console.error("Failed to parse JSON",error);
  39. return {}
  40. }
  41. }