如何从typescript中的json获取连接键列表

如何从typescript中的json获取连接键列表,json,angular,Json,Angular,我知道有很多关于如何从json获取密钥的线程,但我没有找到我的具体案例。我的问题有点诡诈。 例如,考虑这个JSON: { "User": { "Username": "testuser", "Roles": ["Chief", "Other"], "Languages": ["it", "en"], "IsActive": true, "Family": { "Mother": "Mary", "Father": "M

我知道有很多关于如何从json获取密钥的线程,但我没有找到我的具体案例。我的问题有点诡诈。 例如,考虑这个JSON:

 {
  "User": {
    "Username": "testuser",
    "Roles": ["Chief", "Other"],
    "Languages": ["it", "en"],
    "IsActive": true,
    "Family": {
        "Mother": "Mary",
        "Father": "Mike"
      }
  },
  "Timestamp": null
}
我需要获取所有嵌套键的列表,例如:

User.Usernames
User.Roles
User.Languages
User.IsActive
User.Family.Mother
User.Family.Father
Timestamp
而不是

User
Usernames
Roles
Languages
IsActive
Family
Mother
Father
Timestamp
我不想知道每个键的值。我无法使用该值搜索键,因为它每次都会更改。 守则:

Object.keys(myJson)
只提供json的根元素(在本例中为“User”和“Timestamp”)。 我正在使用typescript 2.9.2和Angular 6

谢谢。

试试这个:

let obj ={
  "User": {
    "Username": "testuser",
    "Roles": ["Chief", "Other"],
    "Languages": ["it", "en"],
    "IsActive": true,
    "Family": {
        "Mother": "Mary",
        "Father": "Mike"
      }
  },
  "Timestamp": null
}

var list = [];
getProps(obj);

function getProps(obj, parent=null) {
      for (var props in obj) {

          if (typeof (obj[props]) == "object" && obj[props] !== null && !Array.isArray(obj[props]) ) {
                 getProps(obj[props],props)
          }
          else if (parent !== null) {
                  list.push(parent+"."+props);
          }
          else {
                  list.push(props);
          }
        }
    }

 console.log(list);

这里已经回答了:谢谢,我是用关键字“json”搜索的,所以我没有找到那个特定的线程。我很快就会试试。好的,希望它能符合你的期望。它适用于两个级别如果你需要更深入,你必须在调用函数之前连接父函数(如果条件允许)。很抱歉回答得太晚。谢谢你,伙计,你的解决方案非常有效:)