$(function(){ var editor = ace.edit("editor"); editor.setOption("fontSize","16px"); //editor.setTheme("ace/theme/twilight"); editor.session.setMode("ace/mode/json"); $("#input_textarea").focus(); $("#input_textarea").on('keyup',function(){ var beginTime = +new Date(); var txt = $(this).val(); if($.trim(txt)=='') { editor.setValue(""); return; } try{ var result = jsonlint.parse(txt); if($.trim(txt)==''){ editor.setValue(""); return; } var jsonObj = JSON.parse(txt); var jsonStr = JSON.stringify(jsonObj, null, 4); editor.setValue(jsonStr); }catch(error){ //console.log(error); var arr=$(this).val().split(','); var error_str = "/* 解析 JSON 出错了,具体错误^处已指出 */ \n"; error_str += error.message + "\n";// + '\n\n' + arr.join('\n') + '\n'; var i="Parse error on line ".length; var j=error.message.indexOf(":"); var error_index=parseInt(error.message.substring(i,j)) + 8; error_str += "\n\n"; error_str += "/* 此处的错误行数: " + error_index + "行. */ \n"; let result = arr.map((item, index, array) => { if (index === array.length - 1) { // 最后一个元素 return item; } else { // 非最后一个元素 } if(item.indexOf("\n") < 0){ return item + ",\n"; } return item + ","; //return item.replace(/\n/g, ''); }); //error_str += result.join(',\n') + '\n'; error_str += result.join('') + '\n'; editor.setValue(error_str); } var endTime = +new Date(); console.log("time:"+(endTime-beginTime)+"ms"); }); });