Problem Statement
You are given a JSON object that represents an HTML structure.
Your task is to implement a function JSONtoHTML(json) that converts this JSON structure into a real HTML element (DOM node).
Each node in the JSON can contain:
type: The HTML tag (like"div","p","span")props: An object of HTML attributes (like{ id: "main", class: "title" })children: Either a string (text content) or an array of nested child elements
You must recursively build the corresponding HTML structure.
Example
Input:
const json = {
type: "div",
props: { id: "hello", class: "foo" },
children: [
{ type: "h1", children: "HELLO" },
{
type: "p",
children: [{ type: "span", props: { class: "bar" }, children: "World" }],
},
],
};
Output (HTML):
<div id="hello" class="foo">
<h1>HELLO</h1>
<p>
<span class="bar">World</span>
</p>
</div>
Constraints
- You cannot use external libraries like React or JSDOM.
- You must build and return the DOM structure recursively.
- Throw an error if the JSON format is invalid (missing
typeor not an object).
Example Run
const json = {
type: "div",
props: { id: "hello", class: "foo" },
children: [
{ type: "h1", children: "HELLO" },
{
type: "p",
children: [{ type: "span", props: { class: "bar" }, children: "World" }],
},
],
};
console.log(JSONtoHTML(json));
Expected Output
<div id="hello" class="foo">
<h1>HELLO</h1>
<p>
<span class="bar">World</span>
</p>
</div>