Learn taxonomy assembling into JSON
by Adam Patridge
HTML
<p id="output"></p>
<h2 id="product">Product</h2>
<p>This product taxonomy is used on Learn and will be used on Code Samples. Contact sabarret to request changes.</p>
<table>
<thead>
<tr>
<th>Slug</th>
<th>Name</th>
<th>Level</th>
</tr>
</thead>
<tbody>
<tr>
<td>dotnet</td>
<td>.NET</td>
<td>1</td>
</tr>
<tr>
<td>aspnet</td>
<td>ASP.NET</td>
<td>2</td>
</tr>
<tr>
<td>dotnet-core</td>
<td>.NET Core</td>
<td>2</td>
</tr>
<tr>
<td>azure</td>
<td>Azure</td>
<td>1</td>
</tr>
<tr>
<td>azure-active-directory</td>
<td>Active Directory</td>
<td>2</td>
</tr>
<tr>
<td>azure-advisor</td>
<td>Advisor</td>
<td>2</td>
</tr>
<tr>
<td>azure-cdn</td>
<td>Content Delivery Network</td>
<td>2</td>
</tr>
<tr>
<td>azure-clis</td>
<td>CLIs</td>
<td>2</td>
</tr>
<tr>
<td>azure-cloud-shell</td>
<td>Cloud Shell</td>
<td>2</td>
</tr>
<tr>
<td>azure-cognitive-services</td>
<td>Cognitive Services</td>
<td>2</td>
</tr>
<tr>
<td>azure-container-instances</td>
<td>Container Instances</td>
<td>2</td>
</tr>
<tr>
<td>azure-container-registry</td>
<td>Container Registry</td>
<td>2</td>
</tr>
<tr>
<td>azure-cosmos-db</td>
<td>Cosmos DB</td>
<td>2</td>
</tr>
<tr>
<td>azure-cost-management</td>
<td>Cost Management</td>
<td>2</td>
</tr>
<tr>
<td>azure-digital-twins</td>
<td>Digital Twins</td>
<td>2</td>
</tr>
<tr>
<td>azure-event-grid</td>
<td>Event Grid</td>
<td>2</td>
</tr>
<tr>
<td>azure-event-hubs</td>
<td>Event Hubs</td>
<td>2</td>
</tr>
<tr>
<td>azure-functions</td>
<td>Functions</td>
<td>2</td>
</tr>
<tr>
<td>azure-iot-edge</td>
<td>IoT Edge</td>
<td>2</td>
</tr>
<tr>
<td>azure-iot-hub</td>
<td>IoT Hub</td>
<td>2</td>
</tr>
<tr>
<td>azure-iot-central</td>
<td>IoT Central</td>
<td>2</td>
</tr>
<tr>
<td>azure-key-vault</td>
<td>Key Vault</td>
<td>2</td>
</tr>
<tr>
<td>azure-machine-learning-service</td>
<td>Machine Learning service</td>
<td>2</td>
</tr>
<tr>
<td>azure-machine-learning-studio</td>
<td>Machine Learning...
JavaScript
//$("#product").next().next().find("tr").filter(function (i, e) { return $(e).find("td").toArray(); }).map(function (i, e) { return "{\n\tvalue: \"" + e.find("tr:first").text() + "\"\n},\n"; }).get().join("")
var products = [];
var currentTier1 = null;
var trElements = $("#product").next().next().find("tbody tr");
for (var trElement of trElements) {
var $e = $(trElement);
var product = {
slug: $e.find("td:nth-child(1)").text(),
name: $e.find("td:nth-child(2)").text(),
tier: $e.find("td:nth-child(3)").text(),
};
if (product.tier === "1") {
if (currentTier1 !== null) {
products.push(currentTier1);
}
currentTier1 = { product: product, subProducts: [] };
}
else if (product.tier === "2") {
currentTier1.subProducts.push(product);
}
}
if (currentTier1 !== null) {
if (currentTier1 !== null) {
products.push(currentTier1);
}
}
var output = JSON.stringify(products);
$("#output").text(output);