|
|
<!DOCTYPE html> |
|
|
<html lang="en"> |
|
|
<head> |
|
|
<meta charset="UTF-8"> |
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
|
<title>JSON to HTML Converter</title> |
|
|
</head> |
|
|
<body> |
|
|
|
|
|
<h2>Paste JSON Below:</h2> |
|
|
<textarea id="jsonInput" rows="10" cols="50" placeholder="Paste JSON here"></textarea> |
|
|
<br><br> |
|
|
<button onclick="convertJson()">Convert JSON to HTML</button> |
|
|
|
|
|
<h2>Output:</h2> |
|
|
<div id="output"></div> |
|
|
|
|
|
<script> |
|
|
|
|
|
function jsonToHtml(data) { |
|
|
let html = ''; |
|
|
|
|
|
if (Array.isArray(data)) { |
|
|
html += '<ul>'; |
|
|
data.forEach(item => { |
|
|
html += `<li>${jsonToHtml(item)}</li>`; |
|
|
}); |
|
|
html += '</ul>'; |
|
|
} else if (typeof data === 'object' && data !== null) { |
|
|
for (const key in data) { |
|
|
if (Array.isArray(data[key]) || typeof data[key] === 'object') { |
|
|
html += `<div aria-label="${key}">${jsonToHtml(data[key])}</div>`; |
|
|
} else { |
|
|
html += `<p aria-label="${key}">${data[key]}</p>`; |
|
|
} |
|
|
} |
|
|
} else { |
|
|
html += data; |
|
|
} |
|
|
|
|
|
return html; |
|
|
} |
|
|
|
|
|
|
|
|
function convertJson() { |
|
|
const jsonInput = document.getElementById("jsonInput").value; |
|
|
try { |
|
|
const jsonData = JSON.parse(jsonInput); |
|
|
const htmlContent = jsonToHtml(jsonData); |
|
|
document.getElementById("output").innerHTML = htmlContent; |
|
|
} catch (error) { |
|
|
document.getElementById("output").innerHTML = "<p style='color: red;'>Invalid JSON. Please check the input.</p>"; |
|
|
} |
|
|
} |
|
|
</script> |
|
|
|
|
|
</body> |
|
|
</html> |
|
|
|