Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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递归读取JSON_Javascript - Fatal编程技术网

使用Javascript从另一个未知JSON递归读取JSON

使用Javascript从另一个未知JSON递归读取JSON,javascript,Javascript,我希望递归地读取通用JSON中的所有节点(因此我不要求使用专门处理此类结构的脚本),在阅读时,我希望在这样的结构中创建另一个JSON(示例只是一个摘录): 因此,我要求您提供一个能够处理通用JSON(未知结构和深度)的脚本,并使用上述结构创建另一个JSON 谢谢 试试看 函数追加对象(obj){ //log(JSON.stringify(obj)+“:”+JSON.stringify(obj.length); var Summary=null; for(obj中的var propertyName

我希望递归地读取通用JSON中的所有节点(因此我不要求使用专门处理此类结构的脚本),在阅读时,我希望在这样的结构中创建另一个JSON(示例只是一个摘录):

因此,我要求您提供一个能够处理通用JSON(未知结构和深度)的脚本,并使用上述结构创建另一个JSON

谢谢

试试看

函数追加对象(obj){
//log(JSON.stringify(obj)+“:”+JSON.stringify(obj.length);
var Summary=null;
for(obj中的var propertyName){
if(对象的类型[propertyName]=“对象”&&!摘要){
Summary={name:propertyName.toString(),大小:JSON.stringify(obj).length,子项:[]};
for(对象[propertyName]中的var childPropertyName){
var Child={};
Child[childPropertyName]=obj[propertyName][childPropertyName];
Summary.children[Summary.children.length]=AppendObject(Child);
}
打破
}如果(!Summary)Summary={key:propertyName,value:obj[propertyName],size:JSON.stringify(obj.length};
}
返回摘要;
}
函数转换(){
$(“.data”).empty();
var ParsedJSON=$.parseJSON($(“textarea”).val()),
ObjectArray=[],
摘要=[];
如果(!(ParsedJSON instanceof Array))ObjectArray[0]=ParsedJSON;
else ObjectArray=ParsedJSON;
对于(var i=0;i
您尝试过什么吗?我只做了递归脚本。它可以读取所有节点,但我在创建对象和将其添加到新的JSONTANK中时遇到了麻烦!非常有用!你的剧本写得很好!感谢您的回复,再次感谢您!
[
   {
      "name":"AgreementOffer",
      "size":20000000,
      "children":[
         {
            "name":"Name",
            "size":2000000,
            "children":[
               {
                  "name":"1cap",
                  "size":90
               }
            ]
         },
         {
            "name":"Context",
            "size":2000000,
            "children":[
               {
                  "name":"AgreementInitiator",
                  "size":200,
                  "children":[
                     {
                        "name":"$SPECS-CUSTOMER",
                        "size":100
                     }
                  ]
               },
               {
                  "name":"AgreementInitiator",
                  "size":200,
                  "children":[
                     {
                        "name":"$SPECS-CUSTOMER",
                        "size":100
                     }
                  ]
               },
               {
                  "name":"AgreementResponder",
                  "size":200,
                  "children":[
                     {
                        "name":"$SPECS-APPLICATION",
                        "size":100
                     }
                  ]
               },
               {
                  "name":"AgreementResponder",
                  "size":200,
                  "children":[
                     {
                        "name":"$SPECS-APPLICATION",
                        "size":100
                     }
                  ]
               },
               {
                  "name":"ServiceProvider",
                  "size":200,
                  "children":[
                     {
                        "name":"AgreementResponder",
                        "size":100
                     }
                  ]
               },
               {
                  "name":"ServiceProvider",
                  "size":200,
                  "children":[
                     {
                        "name":"AgreementResponder",
                        "size":100
                     }
                  ]
               },
               {
                  "name":"ExpirationTime",
                  "size":200,
                  "children":[
                     {
                        "name":"2014-02-02T06:00:00",
                        "size":100
                     }
                  ]
               },
               {
                  "name":"ExpirationTime",
                  "size":200,
                  "children":[
                     {
                        "name":"2014-02-02T06:00:00",
                        "size":100
                     }
                  ]
               },
               {
                  "name":"TemplateName",
                  "size":200,
                  "children":[
                     {
                        "name":"Y2-APP-TEMPLATE",
                        "size":100
                     }
                  ]
               },
               {
                  "name":"TemplateName",
                  "size":200,
                  "children":[
                     {
                        "name":"Y2-APP-TEMPLATE",
                        "size":100
                     }
                  ]
               }
            ]
         }
         ]
         }
]
function AppendObject(obj) {
    //console.log(JSON.stringify(obj) + ":" + JSON.stringify(obj).length);

    var Summary = null;
    for (var propertyName in obj) {
    if (typeof obj[propertyName] === "object" && !Summary) {
        Summary = { name: propertyName.toString(), size: JSON.stringify(obj).length, children: [] };

      for (var childPropertyName in obj[propertyName]) {
        var Child = {};
        Child[childPropertyName] = obj[propertyName][childPropertyName];
        Summary.children[Summary.children.length] = AppendObject(Child);
      }
      break;
    } else if (!Summary) Summary = { key: propertyName, value: obj[propertyName], size: JSON.stringify(obj).length };
  }

  return Summary;
}

function Convert() {
    $(".data").empty();
    var ParsedJSON = $.parseJSON($("textarea").val()),
        ObjectArray = [],
        Summaries = [];

    if (!(ParsedJSON instanceof Array)) ObjectArray[0] = ParsedJSON;
    else ObjectArray = ParsedJSON;

    for (var i = 0; i < ObjectArray.length; i++) Summaries[Summaries.length] = AppendObject(ObjectArray[i]);

    $(".data").text(JSON.stringify(Summaries));
}