Heim > Fragen und Antworten > Hauptteil
1. Frage: Konvertieren Sie die Form json1 in die Form json2
2 Beschreibung: Es kann unendlich viele Ebenen in den Eigenschaften geben, der Typ bezieht sich auf den Typ, der Array-Typ enthält Elemente und das Array kann ein Objektarray oder andere Typen sein.
json1:
body: {
"name": "body",
"in": "root",
"required": false,
"description": "",
"type": "object", //数据类型
"format": "",
"properties": {
"bcc": {
"name": "bcc",
"in": "body",
"required": false,
"description": "暗送人列表",
"type": "array",
"format": "",
"properties": null,
"items": {
"name": "bcc.*",
"in": "body",
"required": false,
"description": "每个暗送人",
"type": "object",
"format": "",
"properties": {
"address": {
"name": "bcc.*.address",
"in": "body",
"required": false,
"description": "单个暗送人地址",
"type": "string",
"format": "email",
"properties": null,
"items": null
},
"name": {
"name": "bcc.*.name",
"in": "body",
"required": false,
"description": "单个暗送人名称",
"type": "string",
"format": "",
"properties": null,
"items": null
}
},
"items": null
}
},
"cc": {
"name": "cc",
"in": "body",
"required": false,
"description": "抄送人列表",
"type": "array",
"format": "",
"properties": null,
"items": {
"name": "cc.*",
"in": "body",
"required": false,
"description": "每个抄送人",
"type": "object",
"format": "",
"properties": {
"address": {
"name": "cc.*.address",
"in": "body",
"required": false,
"description": "单个抄送人地址",
"type": "string",
"format": "email",
"properties": null,
"items": null
},
"name": {
"name": "cc.*.name",
"in": "body",
"required": false,
"description": "单个抄送人名称",
"type": "string",
"format": "",
"properties": null,
"items": null
}
},
"items": null
}
},
"content": {
"name": "content",
"in": "body",
"required": true,
"description": "邮件内容",
"type": "string",
"format": "",
"properties": null,
"items": null
},
"from": {
"name": "from",
"in": "body",
"required": true,
"description": "发件人",
"type": "object",
"format": "",
"properties": {
"address": {
"name": "from.address",
"in": "body",
"required": true,
"description": "发件人地址",
"type": "string",
"format": "email",
"properties": null,
"items": null
},
"name": {
"name": "from.name",
"in": "body",
"required": true,
"description": "发件人名称",
"type": "string",
"format": "",
"properties": null,
"items": null
}
},
"items": null
},
"mimeType": {
"name": "mimeType",
"in": "body",
"required": true,
"description": "mime type",
"type": "string",
"format": "alphanum",
"properties": null,
"items": null
},
"subject": {
"name": "subject",
"in": "body",
"required": true,
"description": "主题",
"type": "string",
"format": "",
"properties": null,
"items": null
},
"to": {
"name": "to",
"in": "body",
"required": true,
"description": "收件人列表",
"type": "array",
"format": "",
"properties": null,
"items": {
"name": "to.*",
"in": "body",
"required": true,
"description": "每个收件人",
"type": "object",
"format": "",
"properties": {
"address": {
"name": "to.*.address",
"in": "body",
"required": true,
"description": "单个收件人地址",
"type": "string",
"format": "email",
"properties": null,
"items": null
},
"name": {
"name": "to.*.name",
"in": "body",
"required": true,
"description": "单个收件人名称",
"type": "string",
"format": "",
"properties": null,
"items": null
}
},
"items": null
}
}
},
"items": null
},
2.json 2
body: {
'bcc': [{'address':'单个暗送人地址', 'name':'单个暗送人名称'}],
'cc': [{'address':'单个抄送人地址', 'name':'单个抄送人名称'}],
"content": '邮件内容',
"from": {'address':'发件人地址', "name":'发件人名称'},
"mimeType": "mime type",
"subject": "主题",
"to":[{'address':'单个收件人地址', 'name':'单个收件人名称'}]
}
phpcn_u15822017-05-19 10:26:26
因为时间关系,注解没写多详细
// 假设 a 就是json1, b 就是json2
var a = {
body: {...}
};
var b = {
body: {...}
};
function recursion( data, o, type ) {
// 这里规定下,最终递归出来的数据类型
b.body[o] = {
'object': {},
'array' : [],
'string': ''
}[ type ];
// 这里获取下面的新数据,
var newData = {
'object': data.properties,
'array' : data.items,
'string': data.description
}[ data.type ];
// 判断新数据是否符合递归条件,并获得最终数据
if ( newData && newData.type ) {
recursion( newData, o, type )
}else{
if ( type == 'object' || type == 'array' ) {
for (let i in newData){
newData[i] = newData[i].description
}
};
if ( type == 'array' ) {
b.body[o].push(newData);
} else {
b.body[o] = newData;
};
};
}
var data = a.body.properties;
for (let o in data) {
// 从这里开始递归,
recursion( data[o], o, data[o].type )
}
console.log(b);
ringa_lee2017-05-19 10:26:26
谢邀。。。。
function deepReadTree(param) {
var child_param, cur_result;
if (param.properties) {
child_param = param.properties;
cur_result = {};
for (var key in child_param) {
cur_result[key] = deepReadTree(child_param[key]);
}
} else if (param.items) {
child_param = param.items.properties;
cur_result = {};
for (var key in child_param) {
cur_result.push(deepReadTree(child_param[key]));
}
}else{
cur_result = param.description;
}
return cur_result;
}
讲道理,你的items应该是个数组,不然出不了你那个数据结构。