{
  "title": "JSON unflattener",
  "human_url": "https://happytails.ai/en/data-tools/json-unflattener/",
  "agent_url": "https://happytails.ai/agents/en/data-tools/json-unflattener/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/data-tools/json-unflattener.md",
  "content": "JSON unflattener\nRebuild nested JSON from typed JSON Pointer records. Detect conflicting paths, missing parents and incomplete arrays.\nHow can we improve this tool?\nReport a problem or share an idea.\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\nHow to use JSON unflattener\nPaste a complete path document from JSON flattener.\nReview any path or type conflicts and correct the input.\nDownload the reconstructed JSON and report.\nUseful next steps\nJSON flattener\nJSON path inventory\nJSON array grouper\nUse the reversible path document\nPaste the complete happytails-json-paths-v1 document created by JSON flattener. It includes a format field and records with path, type and, for scalar records, value. Other flat JSON conventions, including arbitrary dotted keys, are not accepted.\nKeep arrays and objects distinct\nExplicit container records preserve empty containers and numeric object keys. Records may arrive in any order. Every child must have a matching object or array parent; array indices start at zero and must be contiguous without leading zeros.\nResolve conflicts before exporting\nDuplicate paths, missing parents, children under scalar values and type mismatches block reconstruction. The tool returns a fixed error report rather than a partial document. Once the paths are consistent, download the reconstructed JSON.",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "JSON flattener",
      "url": "https://happytails.ai/en/data-tools/json-flattener/"
    },
    {
      "name": "JSON path inventory",
      "url": "https://happytails.ai/en/data-tools/json-path-inventory/"
    },
    {
      "name": "JSON array grouper",
      "url": "https://happytails.ai/en/data-tools/json-array-grouper/"
    }
  ],
  "tool": {
    "id": "json-unflattener",
    "category": "data-tools",
    "built": true,
    "requirements": "Up to 1,000,000 input characters, 50,000 values per JSON document and 64 nesting levels. Duplicate keys, negative zero and numbers that cannot safely retain their decimal value are rejected. Quote precision-sensitive numbers as strings. Formatting and object member order may change. Processing stays on your device. Each JSON Pointer is limited to 20,000 characters.",
    "implementation": {
      "fields": [],
      "live": true,
      "presentation": "metrics",
      "note": "Rebuild JSON from the happytails-json-paths-v1 document made by JSON flattener. Explicit container types preserve arrays and numeric object keys. Conflicting paths, missing parents and sparse array indices are rejected. Runs on your device. Up to 1,000,000 input characters, 50,000 values per JSON document and 64 nesting levels. Duplicate JSON keys, unsafe integers, negative zero and decimals that would change on JSON serialization are rejected rather than rounded. Quote precision-sensitive numbers as strings. Output whitespace and object-member order may change. Each JSON Pointer is limited to 20,000 characters.",
      "experience": {
        "automatic": true,
        "single": false,
        "inputMaxLength": 1000000,
        "inputMode": "text",
        "label": "JSON input",
        "placeholder": "{\"format\":\"happytails-json-paths-v1\",\"records\":[{\"path\":\"\",\"type\":\"object\"},{\"path\":\"/name\",\"type\":\"string\",\"value\":\"Ana\"},{\"path\":\"/tags\",\"type\":\"array\"},{\"path\":\"/tags/0\",\"type\":\"string\",\"value\":\"blue\"},{\"path\":\"/empty\",\"type\":\"object\"}]}",
        "help": "Paste text to process locally. Review the result before downloading. Results update as you type. Up to 1,000,000 characters.",
        "action": null
      },
      "mode": "automatic",
      "interactive": false
    },
    "execution": "Browser interface",
    "api": null,
    "browser_agent": {
      "supported": true,
      "name": "run_current_tool",
      "discovery": "WebMCP on the human page in a supporting browser",
      "verification": "See audit/API-AUDIT.md; availability is not verification"
    }
  },
  "markdown": "# JSON unflattener\n\n- Human page: https://happytails.ai/en/data-tools/json-unflattener/\n- Markdown: https://happytails.ai/en/data-tools/json-unflattener.md\n- Structured JSON: https://happytails.ai/agents/en/data-tools/json-unflattener/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `json-unflattener` |\n| Category | data-tools |\n| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |\n| Browser execution | Automatic updates after valid input or file selection. |\n| Browser processing | Browser; see tool notes for network behavior. |\n| HTTP API | Not callable through HTTP. |\n| Browser-agent interface | run_current_tool |\n\n### Implementation notes\n\nRebuild JSON from the happytails-json-paths-v1 document made by JSON flattener. Explicit container types preserve arrays and numeric object keys. Conflicting paths, missing parents and sparse array indices are rejected. Runs on your device. Up to 1,000,000 input characters, 50,000 values per JSON document and 64 nesting levels. Duplicate JSON keys, unsafe integers, negative zero and decimals that would change on JSON serialization are rejected rather than rounded. Quote precision-sensitive numbers as strings. Output whitespace and object-member order may change. Each JSON Pointer is limited to 20,000 characters.\n\n### Inputs and settings\n\nText input: JSON input.\n\nExample or placeholder shown in the interface (not a validated fixture):\n\n```text\n{\"format\":\"happytails-json-paths-v1\",\"records\":[{\"path\":\"\",\"type\":\"object\"},{\"path\":\"/name\",\"type\":\"string\",\"value\":\"Ana\"},{\"path\":\"/tags\",\"type\":\"array\"},{\"path\":\"/tags/0\",\"type\":\"string\",\"value\":\"blue\"},{\"path\":\"/empty\",\"type\":\"object\"}]}\n```\n\nPaste text to process locally. Review the result before downloading. Results update as you type. Up to 1,000,000 characters.\n\nNo additional settings are declared for this tool.\n\n### Browser-agent workflow\n\n1. Open the human page in a browser that supports WebMCP.\n2. Discover the interface exposed by that page; use its actual schema.\n3. Select files on the page first when the tool requires files.\n4. Call `run_current_tool` with valid input and settings.\n5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.\n\nCalls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.\n\n### Planning specification\n\nUp to 1,000,000 input characters, 50,000 values per JSON document and 64 nesting levels. Duplicate keys, negative zero and numbers that cannot safely retain their decimal value are rejected. Quote precision-sensitive numbers as strings. Formatting and object member order may change. Processing stays on your device. Each JSON Pointer is limited to 20,000 characters.\n\nThis describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.\n\n### Complete machine-readable capability record\n\n```json\n{\n  \"id\": \"json-unflattener\",\n  \"category\": \"data-tools\",\n  \"built\": true,\n  \"requirements\": \"Up to 1,000,000 input characters, 50,000 values per JSON document and 64 nesting levels. Duplicate keys, negative zero and numbers that cannot safely retain their decimal value are rejected. Quote precision-sensitive numbers as strings. Formatting and object member order may change. Processing stays on your device. Each JSON Pointer is limited to 20,000 characters.\",\n  \"implementation\": {\n    \"fields\": [],\n    \"live\": true,\n    \"presentation\": \"metrics\",\n    \"note\": \"Rebuild JSON from the happytails-json-paths-v1 document made by JSON flattener. Explicit container types preserve arrays and numeric object keys. Conflicting paths, missing parents and sparse array indices are rejected. Runs on your device. Up to 1,000,000 input characters, 50,000 values per JSON document and 64 nesting levels. Duplicate JSON keys, unsafe integers, negative zero and decimals that would change on JSON serialization are rejected rather than rounded. Quote precision-sensitive numbers as strings. Output whitespace and object-member order may change. Each JSON Pointer is limited to 20,000 characters.\",\n    \"experience\": {\n      \"automatic\": true,\n      \"single\": false,\n      \"inputMaxLength\": 1000000,\n      \"inputMode\": \"text\",\n      \"label\": \"JSON input\",\n      \"placeholder\": \"{\\\"format\\\":\\\"happytails-json-paths-v1\\\",\\\"records\\\":[{\\\"path\\\":\\\"\\\",\\\"type\\\":\\\"object\\\"},{\\\"path\\\":\\\"/name\\\",\\\"type\\\":\\\"string\\\",\\\"value\\\":\\\"Ana\\\"},{\\\"path\\\":\\\"/tags\\\",\\\"type\\\":\\\"array\\\"},{\\\"path\\\":\\\"/tags/0\\\",\\\"type\\\":\\\"string\\\",\\\"value\\\":\\\"blue\\\"},{\\\"path\\\":\\\"/empty\\\",\\\"type\\\":\\\"object\\\"}]}\",\n      \"help\": \"Paste text to process locally. Review the result before downloading. Results update as you type. Up to 1,000,000 characters.\",\n      \"action\": null\n    },\n    \"mode\": \"automatic\",\n    \"interactive\": false\n  },\n  \"execution\": \"Browser interface\",\n  \"api\": null,\n  \"browser_agent\": {\n    \"supported\": true,\n    \"name\": \"run_current_tool\",\n    \"discovery\": \"WebMCP on the human page in a supporting browser\",\n    \"verification\": \"See audit/API-AUDIT.md; availability is not verification\"\n  }\n}\n```\n\n## Page guide\n\nRebuild nested JSON from typed JSON Pointer records. Detect conflicting paths, missing parents and incomplete arrays.\n\nHow can we improve this tool?\n\nReport a problem or share an idea.\n\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\n\n### How to use JSON unflattener\n\n1. Paste a complete path document from JSON flattener.\n2. Review any path or type conflicts and correct the input.\n3. Download the reconstructed JSON and report.\n\n## Useful next steps\n\n- [JSON flattener](https://happytails.ai/en/data-tools/json-flattener/) ([Markdown](https://happytails.ai/en/data-tools/json-flattener.md))\n\n- [JSON path inventory](https://happytails.ai/en/data-tools/json-path-inventory/) ([Markdown](https://happytails.ai/en/data-tools/json-path-inventory.md))\n\n- [JSON array grouper](https://happytails.ai/en/data-tools/json-array-grouper/) ([Markdown](https://happytails.ai/en/data-tools/json-array-grouper.md))\n\n## Use the reversible path document\n\nPaste the complete happytails-json-paths-v1 document created by JSON flattener. It includes a format field and records with path, type and, for scalar records, value. Other flat JSON conventions, including arbitrary dotted keys, are not accepted.\n\n### Keep arrays and objects distinct\n\nExplicit container records preserve empty containers and numeric object keys. Records may arrive in any order. Every child must have a matching object or array parent; array indices start at zero and must be contiguous without leading zeros.\n\n### Resolve conflicts before exporting\n\nDuplicate paths, missing parents, children under scalar values and type mismatches block reconstruction. The tool returns a fixed error report rather than a partial document. Once the paths are consistent, download the reconstructed JSON.\n"
}