给定一个json字符串,将嵌套的json字符串转换为键值对,键是元素层次结构的名称加上"_".<



给定一个json字符串,将嵌套的json字符串转换为键值对,键是元素层次结构的名称加上" _ "。

{
"person": {
"id": 1,
"name": {
"first": "John",
"middle": "H",
"last": "Doe"
},
"address": {
"home": {
"line1": "test address line 1",
"line2": "test address line 1"
}
}
}
}
Output: 
[
"person_id"= 1,
"person_name_first"="John",
"person_name_middle"= "H",
"person_name_last"= "Doe",
"person_address_home_line1"="test address line 1",
"person_address_home_line2"="test address line 1"
]

您可以递归地查找每个键并生成您的对象。

const obj = { "person": { "id": 1, "name": { "first": "John", "middle": "H", "last": "Doe" }, "address": { "home": { "line1": "test address line 1", "line2": "test address line 1" } } } };
const generatePaths = (obj, prefix = "") => {
let o = {};
Object.entries(obj).forEach(([k, v]) => {
const key = prefix ? prefix + '_' + k : k;
if(typeof v === 'object' && !!v){
const par = generatePaths(v, key);
o = {...o, ...par};
} else {
o[key] = v;
}
});
return o;
}
console.log(generatePaths(obj));

最新更新