【问题标题】:Get JSON array data by field name按字段名获取 JSON 数组数据
【发布时间】:2018-07-19 08:27:56
【问题描述】:

我正在尝试通过像 data.name 这样的字段名称获取 JSON 数据,它会返回所需的数据,但我在数组中有 25 个字段,我想使用 data + "." + variable 动态地进行此操作,当我发出警报时它返回[Object object].name,那么我怎样才能让它可执行呢?

我尝试了很多方法,但都失败了,请帮我这样做。

$.ajax({
  type: "Get",
  url: "/Home/Report_Data",
  datatype: "json",
  dataSrc: "",
  contentType: 'application/json; charset=utf-8',
  data: {
    'Arrnagement': Arrnagement
  },
  success: function(data) {
    var result = getElementsById("LD_name LD_Loan_Type LD_id LD_Full_Name_AR LD_GENDER LD_BIRTH_INCORP_DATE LD_PS_MOTHER_NAME LD_Street_AR LD_TEL_MOBILE LD_EMPLOY_STATUS_D LD_EMPLYRS_Name LD_MARITAL_STATUS LD_PS_PL_OF_BIR_AR LD_wifeName LD_Effective_Interest_Rate LD_Contract_amount LD_Repayment_Amount LD_Sector_name LD_NUM_REPAYMENTS LD_Loan_Maturity LD_Orig_Contract_Date LD_Loan_CCY LD_Arrangement LD_COLLATERAL_TYPE LD_Description LD_COLLATERAL_VALUE LD_COLLATERAL_Currency LD_GUARANTOR_ID LD_NATIONALITY LD_G_Full_Name_En LD_G_DATE_OF_BIRTH LD_G_PLACE_OF_BIRTH LD_G_MOTHER_NAME_EN LD_HOUSING_LOAN_AREA_CLASS LD_HOUSING_PROPERTY_NATURE LD_HOUSING_LOAN_PURPOSE LD_HOUSING_PROPERTY_AREA");
    var jid;
    for (var i = 0; i < result.length; i++) {
      jid = (result[i].id.substring(3));
      var resulting = data[0].jid;
      alert(resulting);
      if (result[i].innerHTML = data[0].jid != "undefined") {
        result[i].innerHTML = data[0].jid;
      } else {
        result[i].innerHTML = "";
      }
    }

//jid = name;
//data[0].name returns "Joun"
//data[0]+"."+jid returns [object object].name but i need it to return "Joun"

【问题讨论】:

  • for infor of 可能会在这方面对您有所帮助。 For in 返回键和 for of 值。另请注意,您可以将对象的属性作为数组访问。 myObject.keymyObject["key"] 基本相同
  • Zyigh 它对我不起作用,因为我无法制作 myObject[0,"key"]
  • 安德烈亚斯谢谢它帮助了我

标签: javascript jquery asp.net ajax model-view-controller


【解决方案1】:

这应该可行。我在访问对象属性时更改了点表示法。

$.ajax({
            type: "Get",
            url: "/Home/Report_Data",
            datatype: "json",
            dataSrc: "",
            contentType: 'application/json; charset=utf-8',
            data: { 'Arrnagement': Arrnagement },
            success: function (data) {

                var result = getElementsById("LD_name LD_Loan_Type LD_id LD_Full_Name_AR LD_GENDER LD_BIRTH_INCORP_DATE LD_PS_MOTHER_NAME LD_Street_AR LD_TEL_MOBILE LD_EMPLOY_STATUS_D LD_EMPLYRS_Name LD_MARITAL_STATUS LD_PS_PL_OF_BIR_AR LD_wifeName LD_Effective_Interest_Rate LD_Contract_amount LD_Repayment_Amount LD_Sector_name LD_NUM_REPAYMENTS LD_Loan_Maturity LD_Orig_Contract_Date LD_Loan_CCY LD_Arrangement LD_COLLATERAL_TYPE LD_Description LD_COLLATERAL_VALUE LD_COLLATERAL_Currency LD_GUARANTOR_ID LD_NATIONALITY LD_G_Full_Name_En LD_G_DATE_OF_BIRTH LD_G_PLACE_OF_BIRTH LD_G_MOTHER_NAME_EN LD_HOUSING_LOAN_AREA_CLASS LD_HOUSING_PROPERTY_NATURE LD_HOUSING_LOAN_PURPOSE LD_HOUSING_PROPERTY_AREA");

                var responseData = data[0];
                var jid;
                for (var i = 0; i < result.length; i++) {
                    jid = (result[i].id.substring(3));
                    var resulting = responseData[jid];
                    alert(resulting);
                    if (responseData[jid]) {
                        result[i].innerHTML = responseData[jid];
                    }
                    else {
                        result[i].innerHTML = "";
                    }
                }

【讨论】:

  • 太棒了!很高兴我能帮上忙!然后,您可以将其标记为已接受的答案。 :D @IbrahimSalameg
【解决方案2】:

尝试给出data[0][jid],我们也可以在括号中给出一个变量以获取数据

希望有效果

【讨论】:

    【解决方案3】:

    如果是foo.bar,您将在对象 foo 上获得一个名为“bar”的属性。如果你有一些变量const bar = "qux",并且你想访问与bar值/“qux”/同名的对象上的属性,你只需要使用方括号-foo [bar],这将与调用相同foo.qux;因此,在您的情况下,您只需要使用data[0][jid] 而不是data [0].jid,假设jid 包含一个字符串,该字符串也是data[0] 中的一个键。

    【讨论】:

      【解决方案4】:

      你可以只做data[0][variableName],这将返回你想要的数据。例如。如果数据有一个json字符串[{ "Name" : "Jane Doe"}]你可以这样执行。

      var variableName = "Name";
      console.log(data[0][variableName])
      

      这将返回“Jane Doe”。 如果您的字段名称在数组中,您可以使用$.eachfor loop 遍历它们。 例如,假设您的 json 字符串是 [{"First_Name" : "Jane", "Last_Name" : "Doe", "Age" : 32}],您可以从 json 字符串中获取所有值。

      var FieldNames = ["First_Name" , "Last_Name", "Age"]
      $.each(FieldNames, function(i,item) {
          console.log(data[0][item])
      }
      

      var FieldNames = ["First_Name" , "Last_Name", "Age"]
      for(var i = 0; i < FieldNames.length; i++) {
          console.log(data[0][FieldNames[i]])
      }
      

      【讨论】:

      • 也返回 undefined ! :(
      • @IbrahimSalameh 如果字段名称与变量内容完全相同,这应该可以工作。
      猜你喜欢
      • 2016-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      • 2016-08-26
      • 1970-01-01
      • 1970-01-01
      • 2019-04-12
      相关资源
      最近更新 更多