如何在 React 中映射嵌套的 JSON 对象键?

无花果

我有这样的 Json。如果键是“alanlar”,我需要进入子对象。“alanlar”嵌套对象有明确的但我不知道有多少嵌套的“alanlar”是json。Json结构如下

示例:“IDCard”对象具有“字段”。
路径 -> (idCard.customerSurname , idCard.customerName )。

第二步:“musteriAdi”有“alanlar”。路径 ->( musteriAdi.alan1 )。

第三步“alan1”有“alanlar”。路径 ->( alan1.alan2 )

完整路径 -> kimlikKarti.musteriAdi.alan1.alan2

我需要循环多少个嵌套的“alanlar”对象。并推送一个字符串列表所有完整路径。路径和完整路径只是一个字符串。

实际上我真正需要的是基于“alanlar”的嵌套对象的连接名称。

{
                "alanlar": {
                    "kimlikKarti": {
                        "alanAdi": "kimlikKarti",
                        "alanEtiketi": "Kimlik Kartı",
                        "aciklama": "Ad, soyad gibi kimlik bilgilerini içeren bir form alan grubu",
                        "alanlar": {
                            "musteriSoyadi": {
                                "alanAdi": "musteriSoyadi",
                                "alanEtiketi": "Müşteri Soyadı",
                                "aciklama": "Başvuru sahibinin soyadı"
                            },
                            "musteriAdi": {
                                "alanAdi": "musteriAdi",
                                "alanEtiketi": "Müşteri Adı",
                                "aciklama": "Başvuru sahibinin adı",
                                "alanlar": {
                                 "alan1": {
                                   "alanAdi": "Alan Adı",
                                   "alanlar": {
                                     "alan2":{
                                       "alanSon": "Son Alan",
                                       "alanAdi": "Alan Adı"
                                      }
                                  }
                                }
                              }
                            }
                        }
                    },
                    "basvuruTarihi": {
                        "alanAdi": "basvuruTarihi",
                        "alanEtiketi": "Başvuru Tarihi",
                        "aciklama": "Formun doldurulduğu tarih",
                        "alanlar": {
                            "alan2": {
                                "alanAdi": "musteriSoyadi",
                                "alanEtiketi": "Müşteri Soyadı",
                                "aciklama": "Başvuru sahibinin soyadı",
                            },
                            "alan1": {
                                "alanAdi": "musteriAdi",
                                "alanEtiketi": "Müşteri Adı",
                            }
                        }
                    }
                }
            }

我需要这样的映射结构。

IDCard.customerSurname

IDCard.customerName.field1.field2

applicationDate.field2

申请日期.field1

无花果

这是我的解决方案。

const getPaths = (primeKey: string, obj: any, paths: any = []) => {
        for (var key in obj) {
            obj[key][primeKey] ?
                paths.push(key + "/" + getPaths(primeKey, obj[key][primeKey]))
                :
                paths.push(key)
        }
        return paths;
    }
    var pathList = getPaths('alanlar', obj['alanlar']);
    var pathArray = [];
    for (var i = 0; i < pathList.length; i++) {
        var paths = pathList[i].split(',');
        pathArray.push(paths);
    }

    let path: any, subPath: any;
    var parseObjectKeys = (obj: any, firstItem: any) => {
        for (var prop in obj) {
            if (firstItem in obj) {
                if (firstItem == prop) {
                    path = subPath;
                }
            }
            else {
                subPath = obj.alanAdi;
                var sub = obj[prop];
                if (typeof (sub) == "object") {
                    parseObjectKeys(sub, firstItem);
                }
            }
        }
        return path;
    }

    var parentObjKey, fullPath, pathItem;
    const getKey = (paths: any) => {
        var allPathList = [];
        for (var t = 0; t < paths.length; t++) {
            pathItem = paths[t];
            for (var a = 0; a < pathItem.length; a++) {
                var path = [];
                var firstItem = pathItem[a].split('/')[0];
                var fullItem = pathItem[a].replace(new RegExp("/", "g"), '.');
                parentObjKey = parseObjectKeys(obj, firstItem);
                if (typeof parentObjKey == 'undefined') {
                    allPathList.push(pathItem[a].replace(new RegExp("/", "g"), '.'));
                }
                else {
                    while (typeof parentObjKey != 'undefined') {
                        path.push(parentObjKey);
                        parentObjKey = parseObjectKeys(obj, parentObjKey);
                    }
                    var reversedPath = path.reverse();
                    fullPath = reversedPath.join('.') + '.' + fullItem;
                    allPathList.push(fullPath);
                }
            }
        }
        return allPathList;
    }

这份清单正是我所需要的。

var keyList = getKey(pathArray);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在React中获取请求:如何在对象数组内通过对象的JSON数组进行映射?

如何在JSON模式中约束对象的键的最大长度

如何在React中映射对象数组

Node.js,如何在嵌套的json对象中获取值,中间键未知

如何在React.js中获取JSON对象的键和值

如何在React中更改对象键

如何在React中映射具有动态键的对象?

如何在React中通过对象的嵌套数组进行映射

如何在Javascript对象中引用JSON设置为键

如何在React组件中显示对象的键和值

如何在键更改的地方访问React中的JSON对象

如何在React中映射JSON数据?

PHP如何在JSON对象中回显特定键?

如何在 RestController 中映射嵌套的 JSON?

React:如何在没有键名的情况下映射嵌套的 JSON 对象

如何在 Microsoft Flow 中获取 JSON 中的对象键

如何在 Python 中重命名嵌套 JSON 对象的键

如何在 JSON 中查找对象键的索引

如何在 ReactJS 中访问 JSON 对象键和值

如何在 React-Native 的屏幕上访问嵌套数组 JSON 数据中的嵌套对象

我如何在 Php 值中循环 Json 对象键

如何在 React 中映射 json 文件

如何在 React 中映射 JSON?

如何在 Javascript 中映射嵌套对象?

如何在flutter中映射来自嵌套json对象的数据

如何在 React 中映射嵌套数据对象?

如何在vuejs的json对象中查找嵌套键

如何从 JSON 响应的嵌套对象中的特定键创建列表?

如何在react js中循环遍历json嵌套对象