使用Javascript从另一个未知JSON递归读取JSON
我希望递归地读取通用JSON中的所有节点(因此我不要求使用专门处理此类结构的脚本),在阅读时,我希望在这样的结构中创建另一个JSON(示例只是一个摘录): 因此,我要求您提供一个能够处理通用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
函数追加对象(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));
}