1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script src="/js/jquery.js"></script> <meta charset="utf-8" /> </head> <body> <textarea id="txtarea" rows="6"></textarea> <input type="button" onclick="convertToJson()" value="转换" /> <textarea id="txtarearesult" rows="6"></textarea> </body> </html> <script> function convertToJson() { var val = $("#txtarea").val(); var lines = val.split('\n'); var preNode = {}; var resultJson = []; for (var i = 0; i < lines.length; i++) { var line = lines[i]; var lastIndex = line.lastIndexOf("+"); var text = line.substr(lastIndex + 1, line.length); var currentNode = { text: text, value: text, level: lastIndex, children: [] }; if (lastIndex == -1) { resultJson.push(currentNode); } else if (lastIndex > preNode.level) { preNode.children.push(currentNode); } else { var node = getNodeBylevel(resultJson, lastIndex - 1); if (node) { node.children.push(currentNode); } else { resultJson.push(currentNode); } }
preNode = currentNode; }
$("#txtarearesult").val(JSON.stringify(resultJson)); }
function getNodeBylevel(nodes, level) { if (nodes && nodes[0].level == level) { return nodes[nodes.length - 1]; } else { return getNodeBylevel(nodes[nodes.length - 1].children, level); } }; </script>
|