Search code examples
javascriptjqueryjsonstructurejstree

JsTree with custom json data


I have this structure in json I can not be modified by request.

{
        "Object": [
            {
                "url": "http://www.google.com"
            }            
        ],
        "id": 1,
        "name": "Redirection Rule",
        "Object": {
            "frequency": 1,
            "trigger": 1
        },
        "Object": {
            "http": "Redirect Url",
            "response": 301
        }
    }

I need to use this structure to populate a jstree . I just need to use the "id" fields and "name", how do I set jstree to use "name" instead of "text" as a node name ?


Solution

  • Either:

    1) use the jQuery dataFilter option (this means defining a function for dataFilter in your core.data jsTree config),

    or

    2) set core.data itself to a function, manually make the request and transform it like so:

    $('#your-tree').jstree({
        core : {
            data : function (node, cb) {
                $.ajax({ url : ... }).done(function (data) {
                    cb([{ "id" : data.id, "text" : data.name }])
                });
            }, ...
    

    You can find more info on setting core.data to a function here: https://github.com/vakata/jstree#populating-the-tree-using-a-callback-function