用Javascript从另一个未知的JSON中递归地创建一个JSON
Create a JSON reading recursively from another unknown JSON with Javascript
我想从通用JSON中递归地读取所有节点(所以我不要求脚本专门处理这种结构),而阅读时我会在这样的结构中创建另一个JSON(示例只是摘录):
[
{
"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
}
]
}
]
}
]
}
]
所以,我要求你的脚本能够处理一个通用的JSON(未知的结构和深度),并创建另一个JSON写与上述结构。
谢谢!
试试https://jsfiddle.net/zqkdq5mf/1/
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));
}
相关文章:
- 动态添加通过json创建的选择项
- 从JSON创建一个HTML表
- google将v3事件触发器映射到json创建的标记上
- 在 Javascript 中从 JSON 创建一个数组
- 表达,使用 JSON 创建 cookie
- 从现有的 json 创建动态 json
- 使用 jQuery 从 JSON 创建动态嵌套列表
- 使用 JSON 创建对象的实例
- 在使用可排序排序期间/之后显示使用 JSON 创建的列表中的项目位置
- Javascript 从 json 创建复杂的表头
- 如何使用 JSON 创建链接,单击这些链接时会显示在单独的
- 从JSON创建一个对象,并在Javascript中给它一些方法
- 从 JSON 创建对象
- 从JSON创建可下载的pdf文件
- 我们如何使用d3和交叉过滤javascript框架使用多数组JSON创建多列表
- D3.js-从JSON创建多圆环图数据集
- 如何从Json创建动态javascript对象
- 使用PHP、Javascript和JSON创建一个下拉式过滤器
- 如何使用json创建数组并存储在本地存储中
- 主干:从JSON创建集合