代码之家  ›  专栏  ›  技术社区  ›  nb_nb_nb

获取JSON对象内部的元素类型

  •  1
  • nb_nb_nb  · 技术社区  · 5 年前

    我有一个JSON文件,在@Supercool的帮助下,我能够获得每个文件的键名。我希望能够得到这种类型的值。

    JSON结构:

    [
        {
            "id": 1536700,
            "title": "final_output",
            "error": "",
            "data": [
                {
                    "metric": 4940616.0,
                    "title": "d_revenue"
                },
                {
                    "metric": 5132162.0,
                    "title": "p_revenue"
                },
                {
                    "metric": 4954576.0,
                    "title": "s_revenue"
                },
                {
                    "metric": 4882217.0,
                    "title": "u_revenue"
                },
                {
                    "metric": 4869609.0,
                    "title": "t_revenue"
                },
                {
                    "metric": 5075422.0,
                    "title": "w_revenue"
                },
                {
                    "metric": 4461996.0,
                    "title": "v_revenue"
                }
            ]
        }
    ]
    

    下一结构:

    [
        {
            "run_id": 1536700,
            "code_title": "select_data",
            "error": "",
            "data": [
                {
                    "user_name": "C_51",
                    "num1": 51,
                    "num2": 101,
                    "num3": 151
                },
                {
                    "user_name": "H_51",
                    "num1": 51,
                    "num2": 101,
                    "num3": 151
                },
                {
                    "user_name": "C_52",
                    "num1": 52,
                    "num2": 102,
                    "num3": 152
                },
                {
                    "user_name": "H_52",
                    "num1": 52,
                    "num2": 102,
                    "num3": 152
                },
                {
                    "user_name": "C_53",
                    "num1": 53,
                    "num2": 103,
                    "num3": 153
                }
            ]
        }
    ]
    

    使用Object.keys(yourObject)获取密钥

     $.getJSON(api, function(elem) {
          let keys=elem.map( structure =>  Object.keys(structure.data[0]))         
       });
    

    运行以下代码段以检查其是否正常工作

     let ele= [{"id": 1536700,"title": "final_output","error": "",
    "data": [{"metric": 4940616.0,"title": "d_revenue"},{"metric": 5132162.0,"title": "p_revenue"},{"metric":4954576.0,"title": "s_revenue"},{"metric": 4882217.0,"title":"u_revenue"},{"metric": 4869609.0,"title":"t_revenue"},{"metric": 5075422.0,"title": "w_revenue"},{"metric": 4461996.0,"title": "v_revenue"}
    ]
    },
    {"run_id": 1536700,"code_title": "select_data","error": "",
      "data": [{"user_name": "C_51","num1": 51,"num2": 101,"num3": 151},{"user_name": "H_51","num1": 51,"num2": 101, "num3": 151},{"user_name": "C_52","num1": 52,"num2": 102,"num3": 152},{"user_name": "H_52","num1": 52,"num2": 102,"num3":152},{"user_name": "C_53","num1": 53,"num2": 103,"num3": 153}
    ]}]
     console.log(ele.map( structure =>  Object.keys(structure.data[0])))
     console.log(ele.map( structure =>  Object.values(structure.data[0])))
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    我希望能够得到每个值的类型。我能得到上面列出的值吗?

    [
      [
        number,
        string
      ],
      [
        string,
        number,
        number,
        number
      ]
    ]
    
    3 回复  |  直到 5 年前
        1
  •  1
  •   Đinh Carabus    5 年前

    let ele = [{"id": 1536700,"title": "final_output","error": "", "data": [{"metric": 4940616.0,"title": "d_revenue"},{"metric": 5132162.0,"title": "p_revenue"},{"metric":4954576.0,"title": "s_revenue"},{"metric": 4882217.0,"title":"u_revenue"},{"metric": 4869609.0,"title":"t_revenue"},{"metric": 5075422.0,"title": "w_revenue"},{"metric": 4461996.0,"title": "v_revenue"}]}, {"run_id": 1536700,"code_title": "select_data","error": "", "data": [{"user_name": "C_51","num1": 51,"num2": 101,"num3": 151},{"user_name": "H_51","num1": 51,"num2": 101, "num3": 151},{"user_name": "C_52","num1": 52,"num2": 102,"num3": 152},{"user_name": "H_52","num1": 52,"num2": 102,"num3":152},{"user_name": "C_53","num1": 53,"num2": 103,"num3": 153}]}];
    
    console.log(ele.map(structure => Object.values(structure.data[0]).map(v => typeof v)));
        2
  •  1
  •   M A Salman    5 年前

    做a map() 通过Object.values(obj)和use typeof 返回类型的值

    let ele= [{"id": 1536700,"title": "final_output","error": "",
    "data": [{"metric": 4940616.0,"title": "d_revenue"},{"metric": 5132162.0,"title": "p_revenue"},{"metric":4954576.0,"title": "s_revenue"},{"metric": 4882217.0,"title":"u_revenue"},{"metric": 4869609.0,"title":"t_revenue"},{"metric": 5075422.0,"title": "w_revenue"},{"metric": 4461996.0,"title": "v_revenue"}
    ]
    },
    {"run_id": 1536700,"code_title": "select_data","error": "",
      "data": [{"user_name": "C_51","num1": 51,"num2": 101,"num3": 151},{"user_name": "H_51","num1": 51,"num2": 101, "num3": 151},{"user_name": "C_52","num1": 52,"num2": 102,"num3": 152},{"user_name": "H_52","num1": 52,"num2": 102,"num3":152},{"user_name": "C_53","num1": 53,"num2": 103,"num3": 153}
    ]}]
    console.log("Keys are ..");
     console.log(ele.map( structure =>  Object.keys(structure.data[0])))
    console.log("and their correspondent value types are ..."); 
     console.log(ele.map( structure =>  Object.values(structure.data[0]).map(value => typeof value)))
    .as-console-wrapper { max-height: 100% !important; top: 0; }
        3
  •  0
  •   mplungjan    5 年前

    Javascript是一种原型语言,因此您可以使用 constructor.name js中任何结构的属性,以查看它是什么类型。

    简单示例:

    const a = { t: 5, s: '', d: false, e:[], f:{}, d:5.53 };
    for (let k in a) {
      console.log(k,a[k].constructor.name);
    }