fmt.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. $(function(){
  2. var editor = ace.edit("editor");
  3. editor.setOption("fontSize","16px");
  4. //editor.setTheme("ace/theme/twilight");
  5. editor.session.setMode("ace/mode/json");
  6. $("#input_textarea").focus();
  7. $("#input_textarea").on('keyup',function(){
  8. var beginTime = +new Date();
  9. var txt = $(this).val();
  10. if($.trim(txt)=='') {
  11. editor.setValue("");
  12. return;
  13. }
  14. try{
  15. var result = jsonlint.parse(txt);
  16. if($.trim(txt)==''){
  17. editor.setValue("");
  18. return;
  19. }
  20. var jsonObj = JSON.parse(txt);
  21. var jsonStr = JSON.stringify(jsonObj, null, 4);
  22. editor.setValue(jsonStr);
  23. }catch(error){
  24. //console.log(error);
  25. var arr=$(this).val().split(',');
  26. var error_str = "/* 解析 JSON 出错了,具体错误^处已指出 */ \n";
  27. error_str += error.message + "\n";// + '\n\n' + arr.join('\n') + '\n';
  28. var i="Parse error on line ".length;
  29. var j=error.message.indexOf(":");
  30. var error_index=parseInt(error.message.substring(i,j)) + 8;
  31. error_str += "\n\n";
  32. error_str += "/* 此处的错误行数: " + error_index + "行. */ \n";
  33. let result = arr.map((item, index, array) => {
  34. if (index === array.length - 1) {
  35. // 最后一个元素
  36. return item;
  37. } else {
  38. // 非最后一个元素
  39. }
  40. if(item.indexOf("\n") < 0){
  41. return item + ",\n";
  42. }
  43. return item + ",";
  44. //return item.replace(/\n/g, '');
  45. });
  46. //error_str += result.join(',\n') + '\n';
  47. error_str += result.join('') + '\n';
  48. editor.setValue(error_str);
  49. }
  50. var endTime = +new Date();
  51. console.log("time:"+(endTime-beginTime)+"ms");
  52. });
  53. });