Looping through a JSON file

夙愿已清 提交于 2020-01-17 08:17:07

问题


As the title says I'm trying to read a JSON file that looks like the following:

{
    "response": {
        "current_time": 1490040712, 
        "success": 1, 
        "items": {
            "AK-47 | Black Laminate (Minimal Wear)": {
                "last_updated": 1490025658, 
                "value": 985, 
                "quantity": 124
            }, 
            "AK-47 | Aquamarine Revenge (Field-Tested)": {
                "last_updated": 1490025658, 
                "value": 1775, 
                "quantity": 127
            }, 
            "AK-47 | Black Laminate (Field-Tested)": {
                "last_updated": 1490025658, 
                "value": 890, 
                "quantity": 130
            }, 
            "AK-47 | Aquamarine Revenge (Battle-Scarred)": {
                "last_updated": 1490025658, 
                "value": 1202, 
                "quantity": 70
            }, 
        }
    }
}

Now what I'm trying to do is loop through the JSON file and check if, for example, "AK-47 | Aquamarine Revenge (Battle-Scarred)" is the same as a given string, then return it's value. I tried looking on the internet to get a good look of doing this but I didn't really get much smarter, I tried a few ways but they didn't go so well.

Something I tried:

    var d, i;
    for (i = 0; i < prices.response.items.length; i++) {
        //d = prices.response.data[i];
        itemPrice = i;
    }

This piece was for testing to just return at least something, but it doesn't work at all, can someone help me?

Kind regards!


回答1:


This is how you can check an individual value:

var json =  {"response":
{"success":1,
"current_time":1490040712,
"items":
  {"AK-47 | Aquamarine Revenge (Battle-Scarred)": {"last_updated":1490025658,"quantity":70,"value":1202},
 "AK-47 | Aquamarine Revenge (Factory New)":{"last_updated":1490025658,"quantity":46,"value":3465},
 "AK-47 | Aquamarine Revenge (Field-Tested)":{"last_updated":1490025658,"quantity":127,"value":1775},
 "AK-47 | Aquamarine Revenge (Minimal Wear)":{"last_updated":1490025658,"quantity":92,"value":2427},
 "AK-47 | Aquamarine Revenge (Well-Worn)":{"last_updated":1490025658,"quantity":87,"value":1527},
 "AK-47 | Black Laminate (Battle-Scarred)":{"last_updated":1490025658,"quantity":45,"value":955},
 "AK-47 | Black Laminate (Factory New)":{"last_updated":1490025658,"quantity":11,"value":10152},
 "AK-47 | Black Laminate (Field-Tested)":{"last_updated":1490025658,"quantity":130,"value":890},
 "AK-47 | Black Laminate (Minimal Wear)":{"last_updated":1490025658,"quantity":124,"value":985}}
 }
};

alert(json.response.items["AK-47 | Aquamarine Revenge (Battle-Scarred)"].value);

Since items is not a list, but an object, we cannot simply iterate through it. You just need to iterate through them like using This is how you get the number of properties:

 Object.getOwnPropertyNames(json.response.items).length

See reference : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames

Here there is a code example of how to iterate through keys and values at the link.

 Object.getOwnPropertyNames(json.response.items).forEach(
   function (val, idx, array) {
    console.log(val + ' -> ' + obj[val]);
   }
 );


来源:https://stackoverflow.com/questions/42913815/looping-through-a-json-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!