Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将数组树转换为Json树?_Javascript_Jquery_Json_Tree - Fatal编程技术网

Javascript 如何将数组树转换为Json树?

Javascript 如何将数组树转换为Json树?,javascript,jquery,json,tree,Javascript,Jquery,Json,Tree,我有一个将数据保存在树结构中的数组,但我想将此数据转换为json。 以下是我的数据示例: [Object] 0: Object children: Array[1] 0: Object children: Array[1] 0: Object children: Array[10] 0: Object

我有一个将数据保存在树结构中的数组,但我想将此数据转换为json。 以下是我的数据示例:

[Object]
   0: Object
      children: Array[1]
          0: Object
             children: Array[1]
                0: Object
                   children: Array[10]
                      0: Object
                         children: Array[6]
                         value: Object
                      1: Object
                      2: Object
                      3: Object
                      4: Object
                      5: Object
                      6: Object
                      7: Object
                      8: Object
                      9: Object
                      value: Object
                         Id: "00145E5BB2641EE284F811A7907757A3"
                         Parent: "00145E5BB2641EE284F811A7907737A3"
                         Ref: undefined
                         Text: "Functional Areas"
                         Type: "TWB"
现在我想将这些数据数组转换为Json。我尝试了JSON.stringify(myArray);但是格式不正确。它破坏了树的所有结构。 有什么想法吗

这是给出上述结果的代码

function transformToStruct(xmlData, callback) {
    var data = xmlData.item;        
    var roots=[];
    var children = {};
    var arry=createStructure(data); 

  // find the top level nodes and hash the children based on parent
  for (var i = 0, len = arry.length; i < len; ++i) {
      var item = arry[i],
          p = item.Parent,
          target = [];

        if(p == rootId) {
            target = roots;
        } 
        else {              
            target = (children[p] || (children[p] = []));           
        }

        target.push({ value: item });
  }
  // function to recursively build the tree
  var findChildren = function(parent) {
      if (children[parent.value.Id]) {
          parent.children = children[parent.value.Id];
          for (var i = 0, len = parent.children.length; i < len; ++i) {
              findChildren(parent.children[i]);
          }
      }
  };

  // enumerate through to handle the case where there are multiple roots
  for (var i = 0, len = roots.length; i < len; ++i) {
      findChildren(roots[i]);
  }
//  var returnV = JSON.stringify(roots);
//  callback(returnV);
  callback(roots)
}

function createStructure(data) {
    var arry = [];
    $.each(data, function(i, val) {
        var parent = val["ParentId"]["#text"];
        var id = val["NodeId"]["#text"];
        var text = val["NodeText"]["#text"];
        var level = val["NodeLevel"]["#text"];
        var ref = val["RefObject"]["#text"];
        var type = (val["NodeType"]["#text"]).substring(0,3);
        if(level == "01")
            rootId = parent;
        var item = {"Id": id, "Text": text, "Parent": parent, "Type" : type, "Ref" : ref};
        arry[i] = item;
//      arry.push(item);        
    });
    console.log(arry)
    return arry;
}
函数transformToStruct(xmlData,回调){
var data=xmlData.item;
var根=[];
var children={};
var arry=createStructure(数据);
//查找顶级节点并基于父节点散列子节点
对于(变量i=0,len=arry.length;i
JSON可以将字符串编码(“stringify”)为字符串符号。 它可以从该符号反向创建该对象的另一个实例

样本:

var myArray = new Array("a", "b", "c");
var jsonNotation = JSON.stringify(myArray);
console.log(jsonNotation);
将提供:

[
 "a",
 "b",
 "c"
]
上面的代码

[Object]
   0: Object
      children: Array[1]

不是JavaScript。

可能重复:这是树对象的复制和粘贴吗?如果是这样,您会收到格式不正确的消息,因为它不正确。我想查看您对象的本机JavaScript代码,或者将其打印到控制台日志并粘贴到此处。上面是伪代码,但问题似乎是真代码。@jhorton是的,我复制了我的数据。不正确是什么意思?上面的数据是用jQuery生成的。