export function parseJson (treeData) {
let resultJsonArray = [];
let data = treeData;
let obj = parseObj(data)
resultJsonArray.push.apply(resultJsonArray, obj);
return resultJsonArray;
}
function getElement (key, value) {
let element = {title:"", key:""};
element.title = key;
if (typeof value == "string" || typeof value == "number" || typeof value == "boolean") {
element.key = uuid(8,16);
} else {
element.key = uuid(8,16);
if ( value instanceof Array) {
for (let j = 0; j < value.length; j++) {
let obj = value[j];
element.children=[]
element.children.push.apply(element.children, parseObj(obj));
}
} else {
element.children=[]
element.children.push.apply(element.children, parseObj(value));
}
}
return element;
}
function parseObj (jsonObj) {
let element = [];
for (var key in jsonObj) {
let value = jsonObj[key];
let obj = getElement(key, value);
element.push(obj);
}
return element;
}
function uuid (len, radix) {
var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
var uuid = [], i;
radix = radix || chars.length;
if (len) {
// Compact form
for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
} else {
// rfc4122, version 4 form
var r;
// rfc4122 requires these characters
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
uuid[14] = '4';
// Fill in random data. At i==19 set the high bits of clock sequence as
// per rfc4122, sec. 4.1.5
for (i = 0; i < 36; i++) {
if (!uuid[i]) {
r = 0 | Math.random() * 16;
uuid[i] = chars[(i === 19) ? (r & 0x3) | 0x8 : r];
}
}
}
return uuid.join('');
}
调用
import {parseJson} from '@/util/jsonParse.js'
parseJson(jsonString)