JavaScript - 我正在读取 json 文件并尝试读取某个键的值

标签 javascript json

所以这是我的javascript代码,我正在循环下面的json文件,我想检查嵌套在“相关”下的“bought_together”值,但我似乎无法用我的代码来做到这一点已经到此为止了。我正在使用 'document.body.innerHTML = 'hello';'所以我可以看看我的 if 语句是否有效,这样我就可以执行我想做的事情。如果这不仅仅让我知道,希望这对您有意义。

$(function() {
  $.getJSON('test.json', function(data) {
    $.each(data.products, function(key, val) {
      for (var i = 0; i < data.products.length; i++) {
        var obj = data.products[i];
        if (obj.related == 'bought_together') {
          document.body.innerHTML = 'hello';
        }
      }

    });
  })
})

这是我的 json 文件的片段,以便您可以了解我正在使用的内容。

{
  "products": [{
    "asin": "B0001MQ60A",
    "title": "KEEN Men's Newport H2 Sandal",
    "imUrl": "http://ecx.images- 
    amazon.com / images / I / 41 pRaO7fFSL._SX395_.jpg ",
    "related": {
      "also_bought": ["B000MN8OR6"],
      "also_viewed": ["B0000DYKET", "B0035FE60M", "B008KI85R4", "B000MQWVA4",
        "B003Z4KHXS", "B00GUBOCGQ",
        "B003O2SLXY", "B0017KSRMA", "B003O2SBKM", "B00DSN637U", "B000HDJ8IK", "B00E0J3HVG", "B003Z4KGZW",
        "B005HO2CYG", "B003H4QFVY", "B0017LB2VC", "B002R8JPTK", "B008KI84SE", "B005DJDL9A", "B003TU14OE",
        "B00E0J3HTI", "B000EDTVYY", "B003Z4JOJG", "B00DSN638E", "B00E0J3HVQ", "B008KI88JY", "B00EZIRE20",
        "B0095RGEH2", "B00CEX6MSU", "B000B84URK", "B003O2SPMG", "B002KKCWP4", "B003O2SLXE", "B00JQHFV0M",
        "B008JE8V14", "B0055ATVDW", "B003Z4KLMA", "B008ZAY40Y", "B003H4QFV4", "B00DSN64BU", "B002KKCZLA",
        "B0055ATVV4", "B00HFY47JY", "B00DPHJUTW", "B008FWRJ6I", "B003Z4JUFO", "B00JFB4RL8", "B00HR1LTNM",
        "B005HMTPBG", "B00KCT84I4", "B00HXDITEG"
      ],
      "bought_together": ["B003O2SLXY", "B003H4QFVY", "B002R8JPTK", "B000EDTVYY"]
    },
    "salesRank": {
      "Shoes": 18
    },
    "categories": [
      ["Clothing, Shoes & Jewelry", "Shoes & Accessories: International Shipping Available"],
      ["Clothing, Shoes & Jewelry", "K", "Keen"],
      ["Clothing, Shoes & Jewelry", "Comfort Shoes"],
      ["Clothing, Shoes & Jewelry", "Men", "Shoes", "Sandals"],
      ["Clothing, Shoes & Jewelry", "Men", "Shoes", "Athletic", "Sport Sandals"]
    ]
  }]
}

最佳答案

obj.lated 不包含字符串,它包含一个对象 - 所以你不想检查字符串“bought_together”,你想检查 key 是否包含该字符串名称已存在:

// For demo, data is in a var instead of an ajax call:
var data = {
  "products": [{
    "asin": "B0001MQ60A",
    "title": "KEEN Men's Newport H2 Sandal",
    "imUrl": "http://ecx.images-amazon.com/images/I/41pRaO7fFSL._SX395_.jpg",
    "related": {
      "also_bought": ["B000MN8OR6"],
      "also_viewed": ["B0000DYKET", "B0035FE60M", "B008KI85R4", "B000MQWVA4",
        "B003Z4KHXS", "B00GUBOCGQ",
        "B003O2SLXY", "B0017KSRMA", "B003O2SBKM", "B00DSN637U", "B000HDJ8IK", "B00E0J3HVG", "B003Z4KGZW",
        "B005HO2CYG", "B003H4QFVY", "B0017LB2VC", "B002R8JPTK", "B008KI84SE", "B005DJDL9A", "B003TU14OE",
        "B00E0J3HTI", "B000EDTVYY", "B003Z4JOJG", "B00DSN638E", "B00E0J3HVQ", "B008KI88JY", "B00EZIRE20",
        "B0095RGEH2", "B00CEX6MSU", "B000B84URK", "B003O2SPMG", "B002KKCWP4", "B003O2SLXE", "B00JQHFV0M",
        "B008JE8V14", "B0055ATVDW", "B003Z4KLMA", "B008ZAY40Y", "B003H4QFV4", "B00DSN64BU", "B002KKCZLA",
        "B0055ATVV4", "B00HFY47JY", "B00DPHJUTW", "B008FWRJ6I", "B003Z4JUFO", "B00JFB4RL8", "B00HR1LTNM",
        "B005HMTPBG", "B00KCT84I4", "B00HXDITEG"
      ],
      "bought_together": ["B003O2SLXY", "B003H4QFVY", "B002R8JPTK", "B000EDTVYY"]
    },
    "salesRank": {
      "Shoes": 18
    },
    "categories": [
      ["Clothing, Shoes & Jewelry", "Shoes & Accessories: International Shipping Available"],
      ["Clothing, Shoes & Jewelry", "K", "Keen"],
      ["Clothing, Shoes & Jewelry", "Comfort Shoes"],
      ["Clothing, Shoes & Jewelry", "Men", "Shoes", "Sandals"],
      ["Clothing, Shoes & Jewelry", "Men", "Shoes", "Athletic", "Sport Sandals"]
    ]
  }]
}



// as noted in another answer, you can use $.each or a for loop, no need for both.
for (var i = 0; i < data.products.length; i++) {
  var obj = data.products[i];
  if (obj.related["bought_together"]) {
    console.log("found: ", obj.related["bought_together"]);
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

关于JavaScript - 我正在读取 json 文件并尝试读取某个键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49478493/

相关文章:

javascript - Aurelia.js : How do I animate an element when bound value changes?

javascript - Dojo dGrid/dStore 实时更新

javascript - AngularJS Modyfing json 与 ng-model

javascript - "Fixing"来自 MySQL 的 JSON

javascript - SideWaffle - 创建你自己的模板集来分享

javascript - 如何为单个元素添加 2 个 onclick 事件方法,该元素的类在 jquery 上的第一个单击事件方法上动态更改

javascript - 如何获取窗口视口(viewport)大小?

javascript - 如何计算从字符串到整数的公式

javascript - 基本通话功能故障排除

javascript - JSON 对象与窗口变量,用于使用 reactjs 传递服务器端呈现的初始状态