How To Search Through Json And Find Every Occurrence Of A Specific Name (with Increment)
I have a JSON data, that I want to automatically find every occurrence of a specific name. { 'servergenre': 'Classic Rock', 'servergenre2': 'pop', 'servergenre3': 'rock', '
Solution 1:
Test each key of your JSON to see if it matches "servergenre". If it does, push the corresponding value to an array.
let json = {
"servergenre": "Classic Rock",
"servergenre2": "pop",
"servergenre3": "rock",
"servergenre4": "jazz",
"servergenre5": "80s",
"serverurl": "http://www.name.com",
"servertitle": "ServerHero",
"bitrate": "48",
"samplerate": "0"
}
let result = []
Object.keys(json).forEach( key => {
if(/servergenre/.test(key)) result.push(json[key])
})
console.log(result) // ["Classic Rock","pop", "rock","jazz","80s"]
Alternative method (inspired by osynligsebastian's answer) with filter and map :
let json = {
"servergenre": "Classic Rock",
"servergenre2": "pop",
"servergenre3": "rock",
"servergenre4": "jazz",
"servergenre5": "80s",
"serverurl": "http://www.name.com",
"servertitle": "ServerHero",
"bitrate": "48",
"samplerate": "0"
}
let result = Object.keys(json)
.filter( key =>/servergenre/.test(key))
.map( key => json[key] )
console.log(result) // ["Classic Rock","pop", "rock","jazz","80s"]
Solution 2:
Filter all keys containing the word "servergenre". See this fiddle
var data = {
"servergenre": "Classic Rock",
"servergenre2": "pop",
"servergenre3": "rock",
"servergenre4": "jazz",
"servergenre5": "80s",
"serverurl": "http://www.name.com",
"servertitle": "ServerHero",
"bitrate": "48",
"samplerate": "0"
}
let keys = Object.keys(data).filter(key => key.indexOf('servergenre') > -1);
console.log(keys);
keys.forEach(key => {
console.log(`${key}: ${data[key]}`);
});
Solution 3:
Steps :
- get the array of the properties using Object.keys() method.
- Use Array.filter() method on
Object.keys()
to filter out the elements from an array having same occurance(substring). - Use string.includes() method to check if a string includes "servergenre".
- Use
Array.length
to get the counts of the element.
DEMO
var jsonObj = {
"servergenre": "Classic Rock",
"servergenre2": "pop",
"servergenre3": "rock",
"servergenre4": "jazz",
"servergenre5": "80s",
"serverurl": "http://www.name.com",
"servertitle": "ServerHero",
"bitrate": "48",
"samplerate": "0"
};
var res = Object.keys(jsonObj).filter(item => { return item.includes("servergenre"); });
console.log(res.length);
Updated Answer as per the Jeremy Thille comment.In below demo, we are using indexOf
()
instead of includes()
.
var jsonObj = {
"servergenre": "Classic Rock",
"servergenre2": "pop",
"servergenre3": "rock",
"servergenre4": "jazz",
"servergenre5": "80s",
"serverurl": "http://www.name.com",
"servertitle": "ServerHero",
"bitrate": "48",
"samplerate": "0"
};
var res = Object.keys(jsonObj).filter(item => { return item.indexOf("servergenre") != -1 });
console.log(res.length);
Solution 4:
varURL = "http://name.com/file.json"
$.getJSON(URL, function(data) {
for(var n in data)
{
if(n.substr(0,11)=="servergenre") alert(n);
}
});
Post a Comment for "How To Search Through Json And Find Every Occurrence Of A Specific Name (with Increment)"