【问题标题】:Accessing elements of JSON object without knowing the key names from sessionStorage [closed]在不知道 sessionStorage 的键名的情况下访问 JSON 对象的元素 [关闭]
【发布时间】:2017-06-16 05:13:27
【问题描述】:
{
  "profile": {
    "_elapsedTime": "243",
    "code": "00",
    "data": {
      "acctNr": 3962480,
      "acctStusCd": "A",
      "acctTyp": "C",
      "addresses": [
        {
          "addrCityNm": "DO NOT SHIP",
          "addrCntryCd": "US",
          "addrLine1Txt": "DO NOT SHIP",
          "addrLocTyp": "HOME",
          "addrStCd": "IL",
          "addrZipCd": "60053"
        }
      ],
      "apptDt": "2004-09-02T00:00:00",
      "autoDbtCd": " ",
      "brthdyDt": "1911-11-11T00:00:00",
      "btyAdvrLvlTyp": "0",
      "campaignEndDt": "2017-02-17T00:59:59",
      "campaigns": [
        {
          "cmpgnNr": 5,
          "cmpgnYrNr": 2017,
          "mrktId": 75,
          "success": false
        },
        {
          "cmpgnNr": 6,
          "cmpgnYrNr": 2017,
          "mrktId": 75,
          "success": false
        },
        {
          "cmpgnNr": 4,
          "cmpgnYrNr": 2017,
          "mrktId": 75,
          "success": false
        }
      ],
      "currBalAmt": 0,
      "currSlsCmpgnNr": 5,
      "currSlsYrNr": 2017,
      "currentDtTime": "2017-01-30T14:48:29",
      "daysLeft": "16",
      "deliveryTypeList": [
        {
          "deliveryFromDt": "2017-01-30T14:48:29",
          "deliveryToDt": "2017-02-16T00:00:00",
          "deliveryType": "REG",
          "deliveryTypeLabel": "Regular"
        },
        {
          "deliveryFromDt": "2017-01-30T14:48:29",
          "deliveryToDt": "2017-02-01T14:48:29",
          "deliveryType": "SEP",
          "deliveryTypeLabel": "Separate"
        }
      ],
      "districtNumber": "5999",
      "divisionNumber": "594",
      "dstrbtnCntrCd": "018",
      "emailAddrTxt": "julie.silsby@avon.com",
      "evngPhonNr": "0000000000",
      "flexOrderingEndDate": "2017-02-21T23:59:59",
      "frstNm": "TEST",
      "initCmpgnNr": 18,
      "initCmpgnYrNr": 2004,
      "instntCrdtStusCd": "Y",
      "labcInd": "\u0000",
      "langCd": "E",
      "lastNm": "ACCOUNT",
      "ldrShipLvl": "X",
      "ldrshpTyp": "X",
      "loaNr": 324,
      "mainFrameInd": true,
      "mgrPrsnlRepAcctInd": "N",
      "natnlFutrCmpgnOrdInd": "N",
      "onlnOrdSbmsnDt": "2017-02-15T23:59:59",
      "opportunity": [
        {
          "cmpgn": {
            "cmpgnNr": 6,
            "cmpgnYrNr": 2017,
            "mrktId": 75,
            "success": false
          },
          "cmpgnNr": 6,
          "cmpgnYrNr": 2017,
          "futureCampaignEndDate": "2017-02-22T01:00:00",
          "itemCampaignList": [
            {
              "cmpgnNr": 6,
              "cmpgnYrNr": 2017,
              "mrktId": 75,
              "success": false
            },
            {
              "cmpgnNr": 5,
              "cmpgnYrNr": 2017,
              "mrktId": 75,
              "success": false
            },
            {
              "cmpgnNr": 4,
              "cmpgnYrNr": 2017,
              "mrktId": 75,
              "success": false
            }
          ],
          "onlnOrdSbmsnDt": "2017-03-03T00:59:59",
          "opptId": "5999",
          "opptTyp": "REG",
          "ordTyp": "REG",
          "rpsCmpgnEndDt": "2017-03-03T00:59:59",
          "rpsCmpgnStrtDt": "2017-02-17T01:00:00",
          "rpsOrdDueDt": "2017-03-01T23:59:59",
          "rpsShpngDt": "2017-03-02T00:00:00",
          "slngOprtntyTyp": "REG",
          "success": false
        },
        {
          "cmpgn": {
            "cmpgnNr": 4,
            "cmpgnYrNr": 2017,
            "mrktId": 75,
            "success": false
          },
          "cmpgnNr": 4,
          "cmpgnYrNr": 2017,
          "futureCampaignEndDate": "2016-12-18T01:00:00",
          "itemCampaignList": [
            {
              "cmpgnNr": 4,
              "cmpgnYrNr": 2017,
              "mrktId": 75,
              "success": false
            },
            {
              "cmpgnNr": 3,
              "cmpgnYrNr": 2017,
              "mrktId": 75,
              "success": false
            }
          ],
          "onlnOrdSbmsnDt": "2017-01-19T00:59:59",
          "opptId": "5999",
          "opptTyp": "REG",
          "ordTyp": "REG",
          "rpsCmpgnEndDt": "2017-01-19T00:59:59",
          "rpsCmpgnStrtDt": "2017-01-05T01:00:00",
          "rpsOrdDueDt": "2017-01-17T23:59:59",
          "rpsShpngDt": "2017-01-18T00:00:00",
          "slngOprtntyTyp": "REG",
          "success": false
        },
        {
          "cmpgn": {
            "cmpgnNr": 5,
            "cmpgnYrNr": 2017,
            "mrktId": 75,
            "success": false
          },
          "cmpgnNr": 5,
          "cmpgnYrNr": 2017,
          "futureCampaignEndDate": "2017-01-13T01:00:00",
          "itemCampaignList": [
            {
              "cmpgnNr": 5,
              "cmpgnYrNr": 2017,
              "mrktId": 75,
              "success": false
            },
            {
              "cmpgnNr": 4,
              "cmpgnYrNr": 2017,
              "mrktId": 75,
              "success": false
            },
            {
              "cmpgnNr": 3,
              "cmpgnYrNr": 2017,
              "mrktId": 75,
              "success": false
            }
          ],
          "onlnOrdSbmsnDt": "2017-02-17T00:59:59",
          "opptId": "5999",
          "opptTyp": "REG",
          "ordTyp": "REG",
          "rpsCmpgnEndDt": "2017-02-17T00:59:59",
          "rpsCmpgnStrtDt": "2017-01-19T01:00:00",
          "rpsOrdDueDt": "2017-02-15T23:59:59",
          "rpsShpngDt": "2017-02-16T00:00:00",
          "slngOprtntyTyp": "REG",
          "success": false
        }
      ],
      "opsCampaignStrtDt": "2017-01-13T01:00:00",
      "pastDueStusCd": "0",
      "payByChkStusCd": "Y",
      "prsdntClubStusCd": " ",
      "prsnlWebPage": "Y",
      "pswrdHint": "password2",
      "qpPinAvlbltyInd": false,
      "repAcsInd": "N",
      "repClubLvlCd": "DEFAULT",
      "repClubTypes": [
        {
          "prsdntClubInd": "Y",
          "repClubTypCd": "DEFAULT"
        }
      ],
      "repCustCount": 3,
      "repEnrlments": [
        {
          "enrldTyp": "PBLREL",
          "enrlmtStusCd": "N"
        },
        {
          "enrldTyp": "ACC",
          "enrlmtStusCd": "Y"
        },
        {
          "enrldTyp": "EREP",
          "enrlmtStusCd": "Y"
        }
      ],
      "repEnrollmentType": "E",
      "repMgrEmail": "5999@avon.com",
      "repPblctyRelInd": "N",
      "repPrfrdPrvwInd": "N",
      "rpsCd": "Z",
      "rpsCmpgnEndDt": "2017-02-17T00:59:59",
      "rpsCmpgnStrtDt": "2017-01-19T01:00:00",
      "rpsOrdDueDt": "2017-02-15T23:59:59",
      "rpsShpngDt": "2017-02-16T00:00:00",
      "sdrshipLvl": "X",
      "shpngFcltyCd": "015",
      "ssn": "1111",
      "tierCd": "U",
      "timeZone": "EST",
      "trckRouteCd": "HOLD",
      "trndsttrInd": "N",
      "vanityName": "jsilsby13"
    },
    "mrktCd": "US",
    "success": true,
    "timeStamp": "2017-01-30T14:48:29",
    "token": "71464bf401c522a91e859d4c15d22e570ee50e311e23b610a61b6f76a011c296935e1349afd54057efa3a8a7b85391b79570c628197f2066"
  }
}

这是我在sessionStorage 中获得的 JSON 对象。在控制台 > 应用程序 > 会话存储中,我看到了这个键——ngStorage-getRepInfo,后面跟着上面的 sn -p 代表值。

基本上我不确定我将如何获得这个名字。我查看了 DOM,但在任何地方都没有看到这个 ngStorage-getRepInfo 标记,所以我认为它是动态的(Angular)。

下面我使用这个语法作为占位符。

{}.profile.data.vanityName

我想要做的是获取其中一个值并将其显示在 DOM 中(没有 jQuery)。

【问题讨论】:

  • ngStorage 是一个 Angular 模块,可简化获取/设置 localStorage/sessionStorage 并将前缀添加为默认值,因此不会在任何应用程序代码中找到前缀本身
  • 唯一的建议是迭代所有 sessionStorage 键,看看该键是否会解析为 json,然后查看它是否包含您正在寻找的属性
  • @charlietfl 有没有办法获取外部 JSON 对象。我知道我会使用for in,但我想我想知道如何到达根对象...
  • 试试这个作为简单的启动器...Object.keys(sessionStorage).forEach(function(key){ console.log(sessionStorage[key]) ;})
  • 然后我们try 看看值是否可以是JSON.parse()'d

标签: javascript json session-storage


【解决方案1】:

事实证明,我的假设您将无法访问 'ngStorage-getRepInfo' 是不正确的。

您必须执行以下操作:

var session = sessionStorage.getItem("ngStorage-getRepInfo"),
    obj = JSON.parse(session);

JSON.parse() 方法解析 JSON 字符串,构造字符串描述的 JavaScript 值或对象。可以提供一个可选的 reviver 函数来在结果对象返回之前对其执行转换。

然后像任何其他对象一样向下钻取:

console.log(obj.profile.data.vanityName); //returns vanityName value

【讨论】:

    猜你喜欢
    • 2011-07-04
    • 2016-07-02
    • 2018-11-28
    • 2019-02-24
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多