从物化路径构建JSON树
Build a JSON tree from materialized paths
我计划在MongoDB中使用物化路径来表示树,并需要将物化路径转换回JSON树。
前任。//物化路径
var input = [
{"id": "0", "path": "javascript" },
{"id": "1", "path": "javascript/database" },
{"id": "2", "path": "javascript/database/tree" },
{"id": "3", "path": "javascript/mvc" },
{"id": "4", "path": "javascript/mvc/knockout.js"},
{"id": "5", "path": "javascript/mvc/backbone.js"},
{"id": "6", "path": "c++" },
{"id": "7", "path": "c++/c0xx"},
{"id": "8", "path": "c++/c0xx/lambda expressions"},
{"id": "9", "path": "c++/c0xx/vc10" }
];
结果是:
[
{
"id": "0",
"name": "javascript",
"children": [
{
"id": "1",
"name": "database",
"children": [
{
"id": "2",
"name": "tree",
"children": []
}
]
},
{
"id": "3",
"name": "mvc",
"children": [
{
"id": "4",
"name": "knockout.js",
"children": []
},
{
"id": "5",
"name": "backbone.js",
"children": []
}
]
}
]
},
{
"id": "6",
"name": "c++",
"children": [
{
"id": "7",
"name": "c0xx",
"children": [
{
"id": "8",
"name": "lambda expressions",
"children": []
},
{
"id": "9",
"name": "vc10",
"children": []
}
]
}
]
}
]
我发现使用JQuery将分隔字符串转换为分层JSON,效果很好。
我还从物化路径中找到了Build树,它是用Ruby编写的,使用递归。我很感兴趣,也很好奇能在Javascript中实现这一点,不知道是否有精通Ruby和Javascript的人愿意重写它。我确实尝试过Ruby到JS的转换器,但结果令人费解。
谢谢,Neville
var Comment = new Schema({
date : {
type : Date,
default : Date.now
},
event: ObjectId,
body : String,
pathComment : String,
user: Array
})
Comment.virtual('level').get(function() {
return this.pathComment.split(',').length;
});
Comment.find({event: event.id}).sort({pathComment:1}).exec(function(err, comment){
var collectComment = function(comment){
return {
body: comment.body,
event: comment.event,
pathComment: comment.pathComment,
id: comment._id,
level: comment.level,
user: comment.user[0],
date: comment.date,
comments: []
};
}
var tplComment = [];
var createChildComment = function(comment, currentNode, level){
if(level==1){
comment.push(collectComment(currentNode));
}else{
createChildComment(comment[comment.length-1]['comments'], currentNode,level-1);
}
return;
}
for(var k in comment){
createChildComment(tplComment, comment[k],comment[k].level);
}
});
相关文章:
- Ext.js从json构建模型关系的问题
- 通过推送json构建一个数组对象
- 使用JavaScript和JSON构建内联SVG图
- 如何为此 Firebase Response JSON 构建打字稿界面
- 使用 angularjs 从 JSON 构建地图
- 使用 bluebird 从 JSON 构建承诺
- 如何在 jquery 成功方法中接收 JSON 并使用该 JSON 构建 HTML 内容
- 在python服务器上从Fabric.js JSON构建图像
- 从 JSON 构建动态表
- JSON,jQuery,$.getJSON:JSON构建混乱
- Javascript有效地从JSON构建表并将其添加到DOM
- Node.js循环和JSON构建
- 从JSON构建大量数据
- 验证使用json构建的选择菜单
- Javascript - JSON:构建一个层次树
- 用json构建一个下拉菜单
- 从现有 JSON 构建新的 JSON
- 从json构建promise流
- 如何从javascript中的对话框json构建CQ.Dialog
- 用jQuery从未知深度的嵌套JSON构建级联下拉列表