jjzjj

javascript - 从物化路径构建 JSON 树

coder 2024-05-17 原文

我计划在 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": []
                    }
                ]
            }
        ]
    }
]

我找到了 Convert delimited string into hierarchical JSON with JQuery效果很好。

而且我还找到了Build tree from materialized path它是用 Ruby 编写的并使用递归。我很感兴趣也很好奇看到它是用 Javascript 实现的,并且想知道是否有任何同时精通 Ruby 和 Javascript 的人想要重写它。我确实尝试了一个 Ruby 到 JS 的转换器,但结果是无法理解的。

谢谢, 内维尔

最佳答案

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);
            }
});

关于javascript - 从物化路径构建 JSON 树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8781983/

有关javascript - 从物化路径构建 JSON 树的更多相关文章

  1. ruby-on-rails - Rails HTML 请求渲染 JSON - 2

    在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这

  2. ruby-on-rails - 如何使用 Rack 接收 JSON 对象 - 2

    我有一个非常简单的RubyRack服务器,例如:app=Proc.newdo|env|req=Rack::Request.new(env).paramspreq.inspect[200,{'Content-Type'=>'text/plain'},['Somebody']]endRack::Handler::Thin.run(app,:Port=>4001,:threaded=>true)每当我使用JSON对象向服务器发送POSTHTTP请求时:{"session":{"accountId":String,"callId":String,"from":Object,"headers":

  3. ruby - 在 Ruby 中构建长字符串的简洁方法 - 2

    在编写Ruby(客户端脚本)时,我看到了三种构建更长字符串的方法,包括行尾,所有这些对我来说“闻起来”有点难看。有没有更干净、更好的方法?变量递增。ifrender_quote?quote="NowthatthereistheTec-9,acrappyspraygunfromSouthMiami."quote+="ThisgunisadvertisedasthemostpopularguninAmericancrime.Doyoubelievethatshit?"quote+="Itactuallysaysthatinthelittlebookthatcomeswithit:themo

  4. ruby-on-rails - Rails - 使用/自定义 URL : '/dashboard' 指定根路径 - 2

    如何使此根路径转到:“/dashboard”而不仅仅是http://example.com?root:to=>'dashboard#index',:constraints=>lambda{|req|!req.session[:user_id].blank?} 最佳答案 您可以通过以下方式实现:root:to=>redirect('/dashboard')match'/dashboard',:to=>"dashboard#index",:constraints=>lambda{|req|!req.session[:user_id].b

  5. ruby - 用 YAML.load 解析 json 安全吗? - 2

    我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("

  6. ruby - 使用 rbenv 和 ruby​​-build 构建 ruby​​ 失败,出现 undefined symbol : SSLv2_method - 2

    我正在尝试在配备ARMv7处理器的SynologyDS215j上安装ruby​​2.2.4或2.3.0。我用了optware-ng安装gcc、make、openssl、openssl-dev和zlib。我根据README中的说明安装了rbenv(版本1.0.0-19-g29b4da7)和ruby​​-build插件。.这些是随optware-ng安装的软件包及其版本binutils-2.25.1-1gcc-5.3.0-6gconv-modules-2.21-3glibc-opt-2.21-4libc-dev-2.21-1libgmp-6.0.0a-1libmpc-1.0.2-1libm

  7. ruby - 如何根据长度将路径数组转换为嵌套数组或散列 - 2

    我需要根据字符串路径的长度将字符串路径数组转换为符号、哈希和数组的数组给定以下数组:array=["info","services","about/company","about/history/part1","about/history/part2"]我想生成以下输出,对不同级别进行分组,根据级别的结构混合使用符号和对象。产生以下输出:[:info,:services,about:[:company,history:[:part1,:part2]]]#altsyntax[:info,:services,{:about=>[:company,{:history=>[:part1,:pa

  8. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

    我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

  9. ruby-on-rails - 如何播种图像的路径? - 2

    Organization和Image具有一对一的关系。Image有一个名为filename的列,它存储文件的路径。我在Assets管道中包含这样一个文件:app/assets/other/image.jpg。播种时如何包含此文件的路径?我已经在我的种子文件中尝试过:@organization=...@organization.image.create!(filename:File.open('app/assets/other/image.jpg'))#Ialsotried:#@organization.image.create!(filename:'app/assets/other/i

  10. ruby-on-rails - Rails 渲染带有驼峰命名法的 json 对象 - 2

    我在一个简单的RailsAPI中有以下Controller代码:classApi::V1::AccountsControllerehead:not_foundendendend问题在于,生成的json具有以下格式:{id:2,name:'Simpleaccount',cash_flows:[{id:1,amount:34.3,description:'simpledescription'},{id:2,amount:1.12,description:'otherdescription'}]}我需要我生成的json是camelCase('cashFlows'而不是'cash_flows'

随机推荐