{"id":41714652,"url":"https://github.com/nfx-libs/nfx-json","last_synced_at":"2026-02-27T13:18:04.030Z","repository":{"id":334447515,"uuid":"1141176703","full_name":"nfx-libs/nfx-json","owner":"nfx-libs","description":"A modern C++20 JSON library with type-safe manipulation, zero-copy navigation, and intuitive path-based access","archived":false,"fork":false,"pushed_at":"2026-02-11T06:17:37.000Z","size":244,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-11T14:05:06.129Z","etag":null,"topics":["cpp20","cross-platform","json","json-schema"],"latest_commit_sha":null,"homepage":"https://nfx-libs.github.io/nfx-json/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nfx-libs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-24T11:48:14.000Z","updated_at":"2026-02-11T06:14:58.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nfx-libs/nfx-json","commit_stats":null,"previous_names":["nfx-libs/nfx-json"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/nfx-libs/nfx-json","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfx-libs%2Fnfx-json","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfx-libs%2Fnfx-json/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfx-libs%2Fnfx-json/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfx-libs%2Fnfx-json/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nfx-libs","download_url":"https://codeload.github.com/nfx-libs/nfx-json/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfx-libs%2Fnfx-json/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29447768,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T14:10:32.461Z","status":"ssl_error","status_checked_at":"2026-02-14T14:09:49.945Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp20","cross-platform","json","json-schema"],"created_at":"2026-01-24T22:07:55.508Z","updated_at":"2026-02-27T13:18:04.011Z","avatar_url":"https://github.com/nfx-libs.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nfx-json\n\n\u003c!-- Project Info --\u003e\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](https://github.com/nfx-libs/nfx-json/blob/main/LICENSE) [![GitHub release (latest by date)](https://img.shields.io/github/v/release/nfx-libs/nfx-json?style=flat-square)](https://github.com/nfx-libs/nfx-json/releases) [![GitHub tag (latest by date)](https://img.shields.io/github/tag/nfx-libs/nfx-json?style=flat-square)](https://github.com/nfx-libs/nfx-json/tags)\u003cbr/\u003e\n\n![C++20](https://img.shields.io/badge/C%2B%2B-20-blue?style=flat-square) ![CMake](https://img.shields.io/badge/CMake-3.20%2B-green.svg?style=flat-square) ![Cross Platform](https://img.shields.io/badge/Platform-Linux_Windows-lightgrey?style=flat-square)\n\n\u003c!-- CI/CD Status --\u003e\n\n[![Linux GCC](https://img.shields.io/github/actions/workflow/status/nfx-libs/nfx-json/build-linux-gcc.yml?branch=main\u0026label=Linux%20GCC\u0026style=flat-square)](https://github.com/nfx-libs/nfx-json/actions/workflows/build-linux-gcc.yml) [![Linux Clang](https://img.shields.io/github/actions/workflow/status/nfx-libs/nfx-json/build-linux-clang.yml?branch=main\u0026label=Linux%20Clang\u0026style=flat-square)](https://github.com/nfx-libs/nfx-json/actions/workflows/build-linux-clang.yml) [![Windows MinGW](https://img.shields.io/github/actions/workflow/status/nfx-libs/nfx-json/build-windows-mingw.yml?branch=main\u0026label=Windows%20MinGW\u0026style=flat-square)](https://github.com/nfx-libs/nfx-json/actions/workflows/build-windows-mingw.yml) [![Windows MSVC](https://img.shields.io/github/actions/workflow/status/nfx-libs/nfx-json/build-windows-msvc.yml?branch=main\u0026label=Windows%20MSVC\u0026style=flat-square)](https://github.com/nfx-libs/nfx-json/actions/workflows/build-windows-msvc.yml) [![CodeQL](https://img.shields.io/github/actions/workflow/status/nfx-libs/nfx-json/codeql.yml?branch=main\u0026label=CodeQL\u0026style=flat-square)](https://github.com/nfx-libs/nfx-json/actions/workflows/codeql.yml)\n\n\u003e A modern C++20 JSON library with type-safe manipulation, zero-copy navigation, and intuitive path-based access\n\n## Overview\n\nnfx-json is a modern C++20 library for working with JSON documents. It provides type-safe value access, zero-copy document navigation with JSON Pointer and dot notation paths, STL-compatible iterators for arrays and objects, and efficient parsing and generation - all optimized for performance across multiple platforms and compilers.\n\n## Key Features\n\n### 📦 Core JSON Components\n\n- **Builder**: High-performance streaming JSON construction with fluent method chaining and SIMD optimizations\n- **Document**: Generic JSON document abstraction with type-safe value access and manipulation\n- **PathView**: Zero-copy document traversal with JSON Pointer and dot notation path iteration\n\n### 🔒 Type-Safe Value Access\n\n- Template-based `get\u003cT\u003e()` and `set\u003cT\u003e()` methods with compile-time type checking\n- Support for primitive types (integers, floats, booleans, strings)\n- C++20 concepts for type constraints (`Primitive`, `Value`, `Container`)\n- Returns `std::optional\u003cT\u003e` for safe value retrieval\n- Direct access to `Array` and `Object` containers\n\n### 🛤️ Flexible Path Navigation\n\n- **JSON Pointer (RFC 6901)**: `/user/name`, `/items/0/id`\n- **Dot Notation**: `user.name`, `items[0].id`\n- Auto-detection based on path syntax (paths starting with `/` use JSON Pointer)\n- Create intermediate objects/arrays automatically with `createPath` option\n- Navigate deeply nested structures safely\n\n### 📊 Real-World Applications\n\n- Configuration management (app settings, environment configs)\n- API request/response handling (REST, GraphQL)\n- Data persistence and caching\n- Inter-process communication (IPC)\n- Log processing and analysis\n- Database document storage (NoSQL, MongoDB-style)\n- Game save states and player data\n- Message queue payloads (Kafka, RabbitMQ)\n\n### 🔄 STL-Compatible Iteration\n\n- Range-for loops over arrays: `for (const auto\u0026 item : array) { ... }`\n- Range-for loops over objects: `for (const auto\u0026 [key, value] : object) { ... }`\n- `ObjectIterator` with `.key()` and `.value()` accessors\n- `PathView` for iterating all document paths with depth tracking\n\n### ⚡ Performance Optimized\n\n- SIMD-accelerated JSON serialization (SSE2 string escaping)\n- Zero-copy document navigation with JSON Pointers\n- Fast parsing with `std::from_chars` (no locale overhead)\n- Direct buffer writing for JSON generation (no intermediate DOM)\n- Pre-allocated buffers with smart memory management\n- Compile-time type detection and optimization\n\n### 🌍 Cross-Platform Support\n\n- Linux, Windows\n- GCC 14+, Clang 18+, MSVC 2022+\n- Thread-safe operations\n- Consistent behavior across platforms\n\n## Quick Start\n\n### Requirements\n\n- C++20 compatible compiler:\n  - **GCC 14+** (14.2.0 tested)\n  - **Clang 18+** (19.1.7 tested)\n  - **MSVC 2022+** (19.44+ tested)\n- CMake 3.20 or higher\n\n### CMake Integration\n\n```cmake\n# --- Library build types ---\noption(NFX_JSON_BUILD_STATIC        \"Build static library\"              ON )\noption(NFX_JSON_BUILD_SHARED        \"Build shared library\"              OFF)\n\n# --- Build components ---\noption(NFX_JSON_BUILD_TESTS         \"Build tests\"                       OFF)\noption(NFX_JSON_BUILD_SAMPLES       \"Build samples\"                     OFF)\noption(NFX_JSON_BUILD_BENCHMARKS    \"Build benchmarks\"                  OFF)\noption(NFX_JSON_BUILD_DOCUMENTATION \"Build Doxygen documentation\"       OFF)\n\n# --- Performance options ---\noption(NFX_JSON_ENABLE_SIMD         \"Enable native CPU optimizations\"   ON )\n\n# --- Installation \u0026 packaging ---\noption(NFX_JSON_INSTALL_PROJECT     \"Install project\"                   OFF)\noption(NFX_JSON_PACKAGE_SOURCE      \"Enable source package generation\"  OFF)\n```\n\n### Using in Your Project\n\n#### Option 1: Using FetchContent (Recommended)\n\n```cmake\ninclude(FetchContent)\nFetchContent_Declare(\n  nfx-json\n  GIT_REPOSITORY https://github.com/nfx-libs/nfx-json.git\n  GIT_TAG        main  # or use specific version tag like \"1.0.0\"\n)\nFetchContent_MakeAvailable(nfx-json)\n\n# Link with static library\ntarget_link_libraries(your_target PRIVATE nfx-json::static)\n```\n\n#### Option 2: As a Git Submodule\n\n```bash\n# Add as submodule\ngit submodule add https://github.com/nfx-libs/nfx-json.git third-party/nfx-json\n```\n\n```cmake\n# In your CMakeLists.txt\nadd_subdirectory(third-party/nfx-json)\ntarget_link_libraries(your_target PRIVATE nfx-json::static)\n```\n\n#### Option 3: Using find_package (After Installation)\n\n```cmake\nfind_package(nfx-json REQUIRED)\ntarget_link_libraries(your_target PRIVATE nfx-json::static)\n```\n\n### Building\n\n**Build Commands:**\n\n```bash\n# Clone the repository\ngit clone https://github.com/nfx-libs/nfx-json.git\ncd nfx-json\n\n# Create build directory\nmkdir build \u0026\u0026 cd build\n\n# Configure with CMake\ncmake .. -DCMAKE_BUILD_TYPE=Release\n\n# Build the library\ncmake --build . --config Release --parallel\n\n# Run tests (optional)\nctest -C Release --output-on-failure\n\n# Run benchmarks (optional)\n./bin/Release/BM_JsonAccess\n```\n\n### Documentation\n\nnfx-json includes API documentation generated with Doxygen.\n\n#### 📚 Online Documentation\n\nThe complete API documentation is available online at:\n**https://nfx-libs.github.io/nfx-json**\n\n#### Building Documentation Locally\n\n```bash\n# Configure with documentation enabled\ncmake .. -DCMAKE_BUILD_TYPE=Release -DNFX_JSON_BUILD_DOCUMENTATION=ON\n\n# Build the documentation\ncmake --build . --target nfx-json-documentation\n```\n\n#### Requirements\n\n- **Doxygen** - Documentation generation tool\n- **Graphviz Dot** (optional) - For generating class diagrams\n\n#### Accessing Local Documentation\n\nAfter building, open `./build/doc/html/index.html` in your web browser.\n\n## Usage Examples\n\n### Builder - High-Performance JSON Construction\n\n```cpp\n#include \u003cnfx/json/Builder.h\u003e\n\nusing namespace nfx::json;\n\n// Create JSON with compact output (default)\nBuilder builder;\nbuilder.writeStartObject()\n    .write(\"name\", \"Alice Johnson\")\n    .write(\"age\", 30)\n    .write(\"email\", \"alice@example.com\")\n    .write(\"active\", true)\n    .writeKey(\"tags\").writeStartArray()\n        .write(\"developer\")\n        .write(\"admin\")\n    .writeEndArray()\n    .writeEndObject();\n\nstd::string json = builder.toString();\n// {\"name\":\"Alice Johnson\",\"age\":30,\"email\":\"alice@example.com\",\"active\":true,\"tags\":[\"developer\",\"admin\"]}\n\n// Pretty-print with 2-space indentation\nBuilder prettyBuilder{{2}};  // Options: {indent, bufferSize}\nprettyBuilder.writeStartObject()\n    .write(\"id\", 12345)\n    .write(\"username\", \"alice_dev\")\n    .writeKey(\"profile\").writeStartObject()\n        .write(\"firstName\", \"Alice\")\n        .write(\"lastName\", \"Johnson\")\n    .writeEndObject()\n    .writeEndObject();\n\nstd::string prettyJson = prettyBuilder.toString();\n// {\n//   \"id\": 12345,\n//   \"username\": \"alice_dev\",\n//   \"profile\": {\n//     \"firstName\": \"Alice\",\n//     \"lastName\": \"Johnson\"\n//   }\n// }\n```\n\n### Document - JSON Manipulation\n\n```cpp\n#include \u003cnfx/json/Document.h\u003e\n\nusing namespace nfx::json;\n\n// Create and manipulate JSON document\nDocument doc;\n\n// Set values using JSON Pointer notation\ndoc.set\u003cstd::string\u003e(\"/name\", \"John Doe\");\ndoc.set\u003cint\u003e(\"/age\", 30);\ndoc.set\u003cstd::string\u003e(\"/email\", \"john.doe@example.com\");\n\n// Get values with type safety\nauto name = doc.get\u003cstd::string\u003e(\"/name\");  // optional\u003cstring\u003e\nauto age = doc.get\u003cint\u003e(\"/age\");            // optional\u003cint\u003e\n\n// Work with nested objects\ndoc.set\u003cstd::string\u003e(\"/address/city\", \"New York\");\ndoc.set\u003cstd::string\u003e(\"/address/zip\", \"10001\");\n\n// Arrays\ndoc.set\u003cstd::string\u003e(\"/hobbies/0\", \"reading\");\ndoc.set\u003cstd::string\u003e(\"/hobbies/1\", \"gaming\");\ndoc.set\u003cstd::string\u003e(\"/hobbies/2\", \"coding\");\n\n// Serialize to JSON string\nstd::string json = doc.toString(2); // Pretty-print with 2-space indent\n```\n### Array Iteration with Range-For\n\n```cpp\n#include \u003cnfx/json/Document.h\u003e\n\nusing namespace nfx::json;\n\nauto docOpt = Document::fromString(R\"({\n    \"items\": [\n        {\"id\": 1, \"name\": \"Item A\"},\n        {\"id\": 2, \"name\": \"Item B\"},\n        {\"id\": 3, \"name\": \"Item C\"}\n    ]\n})\");\n\nif (!docOpt)\n{\n    return 1;\n}\n\n// Get array and iterate with range-for\nauto itemsOpt = docOpt-\u003eget\u003cArray\u003e(\"items\");\nif (itemsOpt)\n{\n    for (const auto\u0026 item : itemsOpt.value())\n    {\n        auto id = item.get\u003cint64_t\u003e(\"id\");\n        auto name = item.get\u003cstd::string\u003e(\"name\");\n        if (id \u0026\u0026 name)\n        {\n            std::cout \u003c\u003c \"ID: \" \u003c\u003c *id \u003c\u003c \", Name: \" \u003c\u003c *name \u003c\u003c std::endl;\n        }\n    }\n}\n```\n\n### Object Iteration with Range-For\n\n```cpp\n#include \u003cnfx/json/Document.h\u003e\n\nusing namespace nfx::json;\n\nauto docOpt = Document::fromString(R\"({\n    \"config\": {\n        \"timeout\": 30,\n        \"retries\": 3,\n        \"debug\": true\n    }\n})\");\n\nif (!docOpt)\n{\n    return 1;\n}\n\n// Get object and iterate with range-for (structured bindings)\nauto configOpt = docOpt-\u003eget\u003cObject\u003e(\"config\");\nif (configOpt)\n{\n    for (const auto\u0026 [key, value] : configOpt.value())\n    {\n        std::cout \u003c\u003c \"Key: \" \u003c\u003c key \u003c\u003c \", Value: \" \u003c\u003c value.toString() \u003c\u003c std::endl;\n    }\n}\n```\n\n### PathView - Document Traversal\n\n```cpp\n#include \u003cnfx/json/Document.h\u003e\n\nusing namespace nfx::json;\n\nauto docOpt = Document::fromString(R\"({\n    \"user\": {\n        \"name\": \"Alice\",\n        \"age\": 30,\n        \"address\": {\n            \"city\": \"Seattle\",\n            \"zip\": \"98101\"\n        }\n    },\n    \"tags\": [\"developer\", \"manager\"]\n})\");\n\nif (!docOpt)\n{\n    return 1;\n}\n\n// Iterate all paths with JSON Pointer format (default)\nfor (const auto\u0026 entry : Document::PathView(*docOpt))\n{\n    std::cout \u003c\u003c entry.path \u003c\u003c \" (depth: \" \u003c\u003c entry.depth \u003c\u003c \")\" \u003c\u003c std::endl;\n}\n// Output:\n// /user (depth: 1)\n// /user/name (depth: 2)\n// /user/age (depth: 2)\n// /user/address (depth: 2)\n// /user/address/city (depth: 3)\n// /user/address/zip (depth: 3)\n// /tags (depth: 1)\n// /tags/0 (depth: 2)\n// /tags/1 (depth: 2)\n\n// Use dot notation format\nfor (const auto\u0026 entry : Document::PathView(*docOpt, Document::PathView::Format::DotNotation))\n{\n    std::cout \u003c\u003c entry.path \u003c\u003c std::endl;\n}\n// Output: user.name, user.age, user.address.city, tags[0], tags[1], etc.\n\n// Iterate only leaf values (primitives)\nauto paths = Document::PathView(*docOpt);\nauto leaves = paths.leaves();\nfor (const auto\u0026 entry : leaves)\n{\n    std::cout \u003c\u003c entry.path \u003c\u003c \" = \" \u003c\u003c entry.value().toString() \u003c\u003c std::endl;\n}\n// Output:\n// /user/name = \"Alice\"\n// /user/age = 30\n// /user/address/city = \"Seattle\"\n// /user/address/zip = \"98101\"\n// /tags/0 = \"developer\"\n// /tags/1 = \"manager\"\n```\n\n### Complete Example\n\n```cpp\n#include \u003ciostream\u003e\n#include \u003cnfx/json/Document.h\u003e\n\nusing namespace nfx::json;\n\nint main()\n{\n    // Parse JSON from string\n    auto docOpt = Document::fromString(R\"({\n        \"server\": {\n            \"host\": \"localhost\",\n            \"port\": 8080,\n            \"ssl\": true\n        },\n        \"users\": [\n            {\"name\": \"Alice\", \"role\": \"admin\"},\n            {\"name\": \"Bob\", \"role\": \"user\"}\n        ]\n    })\");\n\n    if (!docOpt) {\n        std::cerr \u003c\u003c \"Failed to parse JSON\\n\";\n        return 1;\n    }\n\n    Document\u0026 config = *docOpt;\n\n    // Access values with type safety\n    auto host = config.get\u003cstd::string\u003e(\"server.host\");\n    auto port = config.get\u003cint64_t\u003e(\"/server/port\");  // JSON Pointer syntax\n    \n    std::cout \u003c\u003c \"Server: \" \u003c\u003c host.value_or(\"unknown\") \n              \u003c\u003c \":\" \u003c\u003c port.value_or(0) \u003c\u003c \"\\n\";\n\n    // Iterate over array\n    if (auto users = config.get\u003cArray\u003e(\"users\")) {\n        for (const auto\u0026 user : *users) {\n            auto name = user.get\u003cstd::string\u003e(\"name\");\n            auto role = user.get\u003cstd::string\u003e(\"role\");\n            std::cout \u003c\u003c \"User: \" \u003c\u003c *name \u003c\u003c \" (\" \u003c\u003c *role \u003c\u003c \")\\n\";\n        }\n    }\n\n    // Modify document\n    config.set\u003cint64_t\u003e(\"/server/port\", 9090);\n    config.set\u003cstd::string\u003e(\"/server/environment\", \"production\");\n\n    // Serialize back to JSON\n    std::cout \u003c\u003c \"\\nUpdated config:\\n\" \u003c\u003c config.toString(2) \u003c\u003c \"\\n\";\n\n    return 0;\n}\n```\n\n**Sample Output:**\n\n```\nServer: localhost:8080\nUser: Alice (admin)\nUser: Bob (user)\n\nUpdated config:\n{\n  \"server\": {\n    \"host\": \"localhost\",\n    \"port\": 9090,\n    \"ssl\": true,\n    \"environment\": \"production\"\n  },\n  \"users\": [\n    {\n      \"name\": \"Alice\",\n      \"role\": \"admin\"\n    },\n    {\n      \"name\": \"Bob\",\n      \"role\": \"user\"\n    }\n  ]\n}\n```\n\n## Project Structure\n\n```\nnfx-json/\n├── benchmark/             # Performance benchmarks with Google Benchmark\n├── cmake/                 # CMake modules and configuration\n├── include/nfx/           # Public headers\n├── samples/               # Example usage and demonstrations\n├── src/                   # Implementation files\n└── test/                  # Unit tests with GoogleTest\n```\n\n## Performance\n\nFor detailed performance metrics and benchmarks, see the [benchmark documentation](benchmark/README.md).\n\n## Roadmap\n\nSee [TODO.md](TODO.md) for upcoming features and project roadmap.\n\n## Changelog\n\nSee the [CHANGELOG.md](CHANGELOG.md) for a detailed history of changes, new features, and bug fixes.\n\n## License\n\nThis project is licensed under the MIT License.\n\n## Dependencies\n\n### Core Dependencies\n\n- **[nfx-stringutils](https://github.com/nfx-libs/nfx-stringutils)**: String manipulation utilities (MIT License)\n- **[nfx-stringbuilder](https://github.com/nfx-libs/nfx-stringbuilder)**: High-performance string builder with SBO (MIT License)\n- **[nfx-containers](https://github.com/nfx-libs/nfx-containers)**: Container utilities (MIT License)\n- **[nfx-hashing](https://github.com/nfx-libs/nfx-hashing)**: CRC32-C hashing for uniqueItems validation (MIT License)\n- **[nfx-resource](https://github.com/nfx-libs/nfx-resource)**: Resource embedding framework (MIT License) - Development only\n\n### Development Dependencies\n\n- **[GoogleTest](https://github.com/google/googletest)**: Testing framework (BSD 3-Clause License) - Development only\n- **[Google Benchmark](https://github.com/google/benchmark)**: Performance benchmarking framework (Apache 2.0 License) - Development only\n\nAll dependencies are automatically fetched via CMake FetchContent when building the library, tests, or benchmarks.\n\n---\n\n_Updated on February 15, 2026_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnfx-libs%2Fnfx-json","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnfx-libs%2Fnfx-json","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnfx-libs%2Fnfx-json/lists"}