Get Category & Subcategory in JSON format
Tool Editor Code:
var result = {
categories: []
};
var categoryMap = {}; // { categoryLabel : [subCategoryLabels] }
// Step 1: Get CATEGORY choices
var catGR = new GlideRecord('sys_choice');
catGR.addQuery('name', 'incident');
catGR.addQuery('element', 'category');
catGR.addQuery('inactive', false);
catGR.orderBy('sequence');
catGR.query();
while (catGR.next()) {
var categoryValue = catGR.getValue('value');
var categoryLabel = catGR.getValue('label');
categoryMap[categoryValue] = {
label: categoryLabel,
subcategories: []
};
}
// Step 2: Get SUBCATEGORY choices
var subGR = new GlideRecord('sys_choice');
subGR.addQuery('name', 'incident');
subGR.addQuery('element', 'subcategory');
subGR.addQuery('inactive', false);
subGR.orderBy('sequence');
subGR.query();
while (subGR.next()) {
var subLabel = subGR.getValue('label');
var dependentValue = subGR.getValue('dependent_value'); // category value
if (categoryMap[dependentValue]) {
categoryMap[dependentValue].subcategories.push(subLabel);
}
}
// Step 3: Build final JSON structure
for (var cat in categoryMap) {
result.categories.push({
category: categoryMap[cat].label,
subcategories: categoryMap[cat].subcategories.length
? categoryMap[cat].subcategories
: ["None"]
});
}
//gs.info(JSON.stringify(result, null, 4));
return result;