Skip to main content

cjsonx Logo
Extreme-performance JSON parser for C11/C++ featuring a 16-byte ultra-compact DOM.

cjsonx

Linux macOS Windows WASM Sanitizers Fuzzing

License: MIT Language Header-Only Dependencies npm PyPI Crates.io

Read the Official Documentation: docs/index.md
Try the Live WebAssembly Demo: https://tiw302.github.io/cjsonx/demo/

Verified Compatibility — Cross-Platform Passing

Architecture Platform Verified Backend
x86_64 (Modern) Linux / Windows AVX2 (Vectorized)
ARM64 (Apple) macOS (M1/M2/M3) NEON (Vectorized)
WebAssembly Chrome / Node.js WASM-SIMD128
RISC-V64 Linux (QEMU) Scalar C11
General Desktop Linux / Windows Scalar C11 Fallback

Table of Contents


Introduction

cjsonx is a header-only C library for parsing JSON. It is designed to achieve high parsing speeds (exceeding 1.0 GB/s on modern hardware) while offering a fully mutable, ultra-compact 16-byte Flat-DOM.

Built on top of a highly optimized dual-stage architecture, cjsonx validates structural characters using SIMD bitmasks (AVX2/NEON/WASM-SIMD) before applying a recursive descent parsing phase that utilizes the state-of-the-art Eisel-Lemire algorithm for blazing-fast 64-bit IEEE 754 floating-point numerical conversions.


Why cjsonx?

Standard JSON parsers often face specific limitations: they can be slower due to heavy heap allocation per node (using malloc recursively), or they consume excessive memory per node (e.g., standard parsers often require 56-64 bytes per node).

cjsonx was built to address these specific use cases by providing a fully mutable DOM while drastically reducing memory overhead and maximizing computational throughput:

Parser Speed (Large Payload) DOM Node Size Allocation Strategy Portability
cJSON ~130 MB/s ~64 bytes Heavy (O(N) Malloc) Universal
jsmn ~600 MB/s Tokenizer Only None Universal
yyjson ~1000+ MB/s 16-24 bytes Arena High
cjsonx ~1000+ MB/s 16 bytes (Fixed) Flat Arena Universal

cjsonx aims to provide an alternative: delivering high throughput and a fully mutable DOM while maintaining an incredibly dense 16-byte memory footprint.


Trade-offs & Alternatives (When NOT to use cjsonx)

We believe in engineering honesty. cjsonx is built for a specific niche and is not a silver bullet. You should evaluate alternatives if your requirements match the following:

  • Need the absolute fastest C++ parser? Use simdjson. It runs at 3-6 GB/s and is the industry gold standard for C++ server backends. cjsonx is pure C11 and cannot compete with their multi-year optimized C++ engine.
  • Need a battle-tested, general-purpose C parser? Use yyjson. It is incredibly fast, highly optimized for general use cases, and has a massive community.
  • Need to drop in a ubiquitous, legacy C parser? Use cJSON. It's older and much slower, but it works on ancient C89 compilers and has no modern standard requirements. (Note: cjsonx also runs without SIMD on any platform via its Scalar fallback, but requires a C11-compliant compiler).

So when should you use cjsonx?

  1. High-Performance Mutable Data: You need a pure C11 parser that allows you to read, edit, add, and remove JSON nodes rapidly, and stringify them back to JSON text without rebuilding the entire document.
  2. Strict Memory Constraints (IoT/RTOS): You need high-speed parsing but absolutely refuse to waste memory. Our 16-byte nodes use 4x less RAM than traditional parsers like cJSON. Additionally, cjsonx_parse_with_buffer() provides a True Zero-Allocation mode for embedded systems.
  3. WASM / Node.js / Browser: The @tiw302/cjsonx npm package brings full DOM querying to JavaScript. After parsing, you can walk the tree field-by-field via getRoot(), .get(key), .getIndex(i), .pointer(path), and .toJS() — no JSON.parse re-serialization needed.

Design Philosophy

The library is built around three strict constraints:

Flat Arena DOM. There are no calls to malloc per node. The entire document tree is parsed sequentially into a continuous array of 16-byte structs. This guarantees cache locality and enables O(1) skipping over complex objects and arrays during iteration.

State-of-the-art Number Parsing. cjsonx incorporates the Eisel-Lemire fast float algorithm directly into its lexical analysis phase. It parses 99.9% of all IEEE 754 floating-point numbers natively using a single fast path, falling back to strict standard library parsing only on extreme mathematical edge cases.

Zero OS-Dependencies. The library is built entirely on standard C11. It does not rely on OS-specific file I/O or POSIX headers. It compiles seamlessly to WebAssembly, embedded ARM targets, and standard desktop operating systems.

True Zero-Allocation Mode. For strict embedded constraints, the cjsonx_parse_with_buffer() API completely bypasses malloc by parsing the JSON entirely into a user-provided fixed-size stack buffer or RTOS memory pool.


Project Structure

The repository is modularly organized to separate the C11 core engine from language bindings, tests, and benchmarks.

cjsonx/
├── src/                 # Core C11 source files (Parser, Builder, Stringifier)
├── include/             # Modular C headers and C++ RAII wrapper (cjsonx.hpp)
├── single_include/      # Amalgamated single-header drop-in (cjsonx.h)
├── python/              # Python bindings powered by pybind11
├── js/                  # JavaScript & WebAssembly bindings
├── rust/                # Safe Rust FFI bindings and Cargo configuration
├── tests/               # Automated unit tests and JSONTestSuite conformance
├── benchmarks/          # Performance benchmarks vs yyjson and cJSON
├── examples/            # Runnable tutorials for C, C++, Python, and JS
├── docs/                # Markdown documentation for MkDocs website
├── scripts/             # Internal CI/CD and utility scripts
└── CMakeLists.txt       # Unified cross-platform build system

Limits & Guarantees

Professional-grade software requires transparent technical boundaries. Here is exactly what cjsonx guarantees, and where it draws the line:

  • RFC 8259 Compliance: cjsonx strictly adheres to RFC 8259 and ECMA-404. It correctly rejects structural anomalies, unescaped control characters, and deeply nested bombs.
  • Thread Safety: The core parsing engine is entirely stateless. Multiple threads can safely parse different JSON documents concurrently without any mutexes or locks.
  • Length Limit: The maximum byte length of any single string or serialized container is 16MB (specifically, 16,777,215 bytes, due to the 24-bit length field packed in the 16-byte DOM node structure).
  • Nesting Depth Limit: The maximum nesting depth is 1000 (CJSONX_MAX_DEPTH) to prevent stack overflow on deeply nested documents. This value is compile-time configurable.
  • Builder Performance: Pushing elements to an array via cjsonx_array_push is an O(N) operation because it traverses the list of siblings to locate the end of the array. Repeated sequential pushes to build large arrays will result in O(N^2) complexity.
  • Static Buffer Read-Only: Documents parsed with cjsonx_parse_with_buffer() are marked is_static = true. The entire DOM is read-only — calling any Builder API function (e.g., cjsonx_object_set, cjsonx_array_push) on a static document will return failure, as the internal node array cannot grow. cjsonx_doc_free() on a static document is a safe no-op.

Requirements

Component Requirement
C Standard C11 or later
Compiler GCC 4.9+, Clang 3.5+, MSVC 2019+, Emscripten 3.0+
Dependencies None (Standard C Library only)

Verified Toolchains

The following toolchains are tested on every commit via GitHub Actions:

Toolchain Platform Backend
GCC Linux x86_64 Scalar, AVX2
GCC (riscv64-linux-gnu) Linux RISC-V64 (QEMU) Scalar
Clang macOS Apple Silicon NEON
MSVC Windows x64 Scalar, AVX2
Emscripten WASM (Node.js) WASM-SIMD, Scalar

Build and Installation

cjsonx is entirely header-only.

Single-Header Distribution (Recommended)

The simplest integration is copying the amalgamated single_include/cjsonx.h into your project. Define the implementation macro in exactly one C file to compile the core functions:

#define CJSONX_IMPLEMENTATION
#include "cjsonx.h"

All other translation units should include the header without the macro.

CMake (System Install)

You can build the test suites and install the library system-wide:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
sudo cmake --install build

Then in your project's CMakeLists.txt:

find_package(cjsonx REQUIRED)
target_link_libraries(my_app PRIVATE cjsonx::cjsonx)

Python / PyPI

Install the Python bindings via pip — no build tools required, wheels are pre-built for Linux, macOS, and Windows:

pip install cjsonx

Then use it directly from Python:

import cjsonx

doc = cjsonx.parse('{"name": "alice", "scores": [10, 20, 30]}')
print(doc["name"])              # alice
print(doc["scores"][0])         # 10
print(doc.get("/scores/2"))     # 30 (json pointer)

Node.js / npm

Install the pre-built WebAssembly package — no native compilation or Emscripten required:

npm install @tiw302/cjsonx

Then query the DOM directly from JavaScript:

const cjsonx = require('@tiw302/cjsonx');
await cjsonx.ready;

const ok = cjsonx.parse('{"name": "alice", "scores": [10, 20, 30]}');
if (ok) {
    const root  = cjsonx.getRoot();
    const name  = root.get('name').str;             // 'alice'
    const first = root.get('scores').getIndex(0).num; // 10
    const obj   = root.toJS();                      // plain JS object
    cjsonx.free();
}

Rust / Cargo

Install the safe Rust bindings via Cargo. The bindings use FFI to communicate with the C11 core at zero-cost:

cargo add cjsonx

Then parse and query JSON safely in Rust:

use cjsonx::Document;

fn main() {
    let doc = Document::parse(r#"{"name": "alice", "scores": [10, 20, 30]}"#).unwrap();
    let root = doc.root();

    println!("{}", root.get("name").unwrap().as_str().unwrap());
    println!("{}", root.get("scores").unwrap().at(0).unwrap().as_f64().unwrap());
}

Running Tests & Build Flags

The project integrates tightly with CMake's ctest infrastructure. For contributors, we highly recommend running the test suite with memory sanitizers enabled to ensure zero memory leaks and catch undefined behavior.

# 1. Build tests with AddressSanitizer (ASan) and UndefinedBehaviorSanitizer (UBSan)
cmake -B build_san -DCJSONX_ENABLE_SANITIZERS=ON
cmake --build build_san

# 2. Run the automated test suite
ctest --test-dir build_san -V --output-on-failure

If you wish to generate code coverage reports (gcov), use:

cmake -B build_cov -DCJSONX_ENABLE_COVERAGE=ON
cmake --build build_cov
ctest --test-dir build_cov

Configuration Macros

All constants can be overridden at compile time by defining them before including the header (or passing them as -D flags to your compiler). The defaults are suitable for most workloads.

Macro Default Description
CJSONX_MAX_DEPTH 1000 Maximum JSON nesting depth. Documents exceeding this during parsing are rejected to prevent stack overflow.
CJSONX_ARENA_CHUNK_SIZE 4096 Byte size of each chunk allocated by the string arena. Increase for documents with many long escaped strings.
CJSONX_INITIAL_TAPE_CAP 1024 Initial capacity (in entries) of the Stage 1 structural token tape.
CJSONX_INITIAL_CONTAINER_CAP 16 Initial capacity (in nodes) of the flat DOM node array.

Example — embedded target with a tiny nesting limit:

#define CJSONX_MAX_DEPTH 32
#define CJSONX_ARENA_CHUNK_SIZE 512
#define CJSONX_IMPLEMENTATION
#include "cjsonx.h"

API Reference

Core Parsing

Function Signature Description
cjsonx_parse cjsonx_doc_t* cjsonx_parse(const char* json, size_t length) Parses a JSON string into a managed document tree. Zero-copy — the input buffer must outlive the document. Returns NULL on fatal memory error. Check doc->is_valid for syntax status.
cjsonx_parse_ex cjsonx_doc_t* cjsonx_parse_ex(const char* json, size_t length, cjsonx_allocator_t* alloc) Parses a JSON string using custom memory allocation hooks.
cjsonx_parse_with_buffer cjsonx_doc_t* cjsonx_parse_with_buffer(const char* json, size_t length, void* buffer, size_t buffer_size) Zero-allocation mode. Parses JSON into a user-provided buffer. Result is read-only (is_static = true); Builder API calls will fail on this document.
cjsonx_doc_free void cjsonx_doc_free(cjsonx_doc_t* doc) Frees the entire document arena in a single call.
cjsonx_error_string const char* cjsonx_error_string(cjsonx_error_t err) Translates an error code into a human-readable string.

Owned-Copy Parsing

Use these when you don't want to manage the lifetime of the input buffer yourself. The document takes ownership of an internal copy of the JSON string — you can free or modify the original buffer immediately after the call.

Function Signature Description
cjsonx_parse_copy cjsonx_doc_t* cjsonx_parse_copy(const char* json, size_t length) Copies the input buffer and parses it. The document owns the copy.
cjsonx_parse_copy_ex cjsonx_doc_t* cjsonx_parse_copy_ex(const char* json, size_t length, cjsonx_allocator_t* alloc) Same as above, but with a custom allocator.
cjsonx_parse_copy_cstr cjsonx_doc_t* cjsonx_parse_copy_cstr(const char* json) Convenience wrapper for null-terminated strings.

DOM Access

Function Signature Description
cjsonx_get cjsonx_val_t cjsonx_get(cjsonx_val_t obj, const char* key) Retrieves a child node from an Object by its exact null-terminated string key. O(N) linear scan.
cjsonx_get_len cjsonx_val_t cjsonx_get_len(cjsonx_val_t obj, const char* key, size_t key_len) Same as cjsonx_get but accepts a key with explicit length. Useful for keys that are not null-terminated.
cjsonx_get_index cjsonx_val_t cjsonx_get_index(cjsonx_val_t arr, size_t index) Retrieves a child node from an Array by its index. O(N) sibling walk.
cjsonx_get_type cjsonx_type_t cjsonx_get_type(cjsonx_val_t val) Returns the type of the node (CJSONX_STRING, CJSONX_NUMBER, etc.).
cjsonx_num double cjsonx_num(cjsonx_val_t val) Retrieves the numerical value as a float.
cjsonx_int int64_t cjsonx_int(cjsonx_val_t val) Retrieves the numerical value as a 64-bit integer.
cjsonx_str const char* cjsonx_str(cjsonx_val_t val) Retrieves the string pointer. Note: zero-copy strings are not null-terminated — always use cjsonx_str_len() to bound the read.
cjsonx_str_len size_t cjsonx_str_len(cjsonx_val_t val) Returns the exact byte length of the string.
cjsonx_size size_t cjsonx_size(cjsonx_val_t val) Returns the element count of an Array or Object.
cjsonx_bool bool cjsonx_bool(cjsonx_val_t val) Retrieves the boolean value.
cjsonx_is_null bool cjsonx_is_null(cjsonx_val_t val) Returns true if the node is explicitly a JSON null or is empty/invalid.
cjsonx_pointer_get cjsonx_val_t cjsonx_pointer_get(cjsonx_val_t root, const char* path) Retrieves a node using a RFC 6901 JSON Pointer path.

Iteration

Function Signature Description
cjsonx_iter_init cjsonx_iter_t cjsonx_iter_init(cjsonx_val_t val) Initializes a lightweight iterator for an Array or Object.
cjsonx_iter_next bool cjsonx_iter_next(cjsonx_iter_t* iter) Advances the iterator to the next element or key-value pair.

Mutation & Builder API

Function Signature Description
cjsonx_create_null cjsonx_val_t cjsonx_create_null(cjsonx_doc_t* doc) Creates a null node.
cjsonx_create_bool cjsonx_val_t cjsonx_create_bool(cjsonx_doc_t* doc, bool val) Creates a boolean node.
cjsonx_create_number cjsonx_val_t cjsonx_create_number(cjsonx_doc_t* doc, double val) Creates a number node.
cjsonx_create_string cjsonx_val_t cjsonx_create_string(cjsonx_doc_t* doc, const char* str) Creates a string node (copies string to arena).
cjsonx_create_object cjsonx_val_t cjsonx_create_object(cjsonx_doc_t* doc) Creates an empty Object node.
cjsonx_create_array cjsonx_val_t cjsonx_create_array(cjsonx_doc_t* doc) Creates an empty Array node.
cjsonx_object_set bool cjsonx_object_set(cjsonx_val_t obj, const char* key, cjsonx_val_t val) Inserts or overwrites a key-value pair in an Object.
cjsonx_array_push bool cjsonx_array_push(cjsonx_val_t arr, cjsonx_val_t val) Appends a value to an Array.
cjsonx_object_remove bool cjsonx_object_remove(cjsonx_val_t obj, const char* key) Removes a key-value pair from an Object.
cjsonx_array_remove bool cjsonx_array_remove(cjsonx_val_t arr, size_t index) Removes a value at the given index from an Array.
cjsonx_clone_val cjsonx_val_t cjsonx_clone_val(cjsonx_doc_t* dest_doc, cjsonx_val_t src_val) Recursively clones a value node and its children into another document arena.
cjsonx_merge_patch cjsonx_val_t cjsonx_merge_patch(cjsonx_val_t target, cjsonx_val_t patch) Applies an RFC 7396 JSON Merge Patch to a target node.
cjsonx_stringify char* cjsonx_stringify(cjsonx_doc_t* doc) Converts document to minified JSON string (malloc'd).
cjsonx_stringify_format char* cjsonx_stringify_format(cjsonx_doc_t* doc, int indent) Converts document to pretty JSON string with indent spaces.

File I/O Utilities

Function Signature Description
cjsonx_read_file cjsonx_doc_t* cjsonx_read_file(const char* path) Reads and parses a JSON file.
cjsonx_read_file_ex cjsonx_doc_t* cjsonx_read_file_ex(const char* path, cjsonx_allocator_t* alloc) Reads and parses a JSON file using a custom allocator.
cjsonx_write_file bool cjsonx_write_file(const char* path, cjsonx_doc_t* doc) Serializes a document to a file (minified).
cjsonx_write_file_format bool cjsonx_write_file_format(const char* path, cjsonx_doc_t* doc, int indent) Serializes a document to a file (pretty printed).

Type Aliases

All core types have _t-suffix canonical names and shorter aliases for convenience. Both forms compile identically and can be used interchangeably:

Canonical (_t) Short Alias Description
cjsonx_doc_t cjsonx_doc Parsed document handle
cjsonx_val_t cjsonx_val Value / node handle
cjsonx_iter_t cjsonx_iter Iterator state
cjsonx_type_t cjsonx_type Node type enum
cjsonx_allocator_t cjsonx_alc Custom allocator struct

Documentation

Check out the docs/ directory for deep-dives into the architecture and API:

  • The cjsonx Algorithm: Detailed explanation of the 2-stage SIMD scanning and Eisel-Lemire numerical parsing engine.
  • API Reference: Complete guide to all functions, structures, and memory safety guarantees.

Examples

Runnable examples demonstrating advanced error handling, DOM iteration, JSON Pointers, and file I/O are provided in their respective directories:

C Examples (examples/c/)
  • simple_parse.c — Demonstrates standard parsing, key retrieval, array iteration, and type checking using the iterator API.
  • dom_access.c — Demonstrates basic JSON object parsing and index-based array access.
  • embedded_noalloc.c — Demonstrates zero-allocation memory parsing using a pre-allocated static stack buffer.
  • error_handling.c — Demonstrates detailed parse error diagnostics.
  • float128_precision.c — Demonstrates parsing extreme, high-precision float and massive integer formats.
C++ Examples (examples/cpp/)
  • cpp_wrapper_example.cpp — Demonstrates RAII memory management, fluent API access, and automatic type conversion using the native C++ wrapper (cjsonx.hpp).
Python Examples (examples/python/)
  • error_handling.py — Demonstrates catching exceptions and locating the exact byte offset of syntax errors.
  • file_io.py — Demonstrates parsing a JSON file directly via the C++ backend.
  • iteration.py — Demonstrates Pythonic dictionary-style iteration over object nodes.
  • json_pointer.py — Demonstrates querying parsed documents using RFC 6901 JSON pointers.
Node.js / WASM Examples (examples/js/)
  • error_handling.js — Demonstrates robust error detection and reporting offsets in JavaScript.
  • to_js_object.js — Demonstrates converting flat C-memory DOM trees back into native V8 JavaScript objects.
  • json_pointer.js — Demonstrates querying parsed documents using RFC 6901 JSON pointers.
Rust Examples (rust/examples/)
  • rust_example.rs — Demonstrates safe parsing, type-checking, and array iteration using the Rust FFI bindings.
  • error_handling.rs — Demonstrates idiomatic Rust Result matching for graceful error handling without panicking.

Quick Start: Basic Parsing & Iteration

#define CJSONX_IMPLEMENTATION
#include "cjsonx.h"
#include <stdio.h>
#include <string.h>

int main(void) {
    const char* json = "{\"name\": \"Alice\", \"skills\": [\"C\", \"SIMD\"]}";

    // Parse the JSON string
    cjsonx_doc* doc = cjsonx_parse(json, strlen(json));
    if (!doc || !doc->is_valid) {
        printf("Failed to parse JSON!\n");
        return 1;
    }

    // Retrieve name and skills
    cjsonx_val name = cjsonx_get(doc->root, "name");
    cjsonx_val skills = cjsonx_get(doc->root, "skills");

    printf("Name: %.*s\n", (int)cjsonx_str_len(name), cjsonx_str(name));

    // Iterate array using flat DOM iterator
    if (cjsonx_get_type(skills) == CJSONX_ARRAY) {
        printf("Skills:\n");
        cjsonx_iter iter = cjsonx_iter_init(skills);
        while (cjsonx_iter_next(&iter)) {
            printf("  - %.*s\n", (int)cjsonx_str_len(iter.value), cjsonx_str(iter.value));
        }
    }

    cjsonx_doc_free(doc);
    return 0;
}

Quick Start: Zero-Allocation Mode (Embedded/RTOS)

#define CJSONX_IMPLEMENTATION
#include "cjsonx.h"
#include <stdio.h>
#include <string.h>

int main(void) {
    const char* json = "{\"sensor\": \"temp\", \"value\": 24.5}";
    uint8_t static_buffer[4096]; // Static buffer on the stack (zero malloc!)

    cjsonx_doc* doc = cjsonx_parse_with_buffer(json, strlen(json), static_buffer, sizeof(static_buffer));
    if (doc && doc->is_valid) {
        cjsonx_val sensor = cjsonx_get(doc->root, "sensor");
        cjsonx_val value = cjsonx_get(doc->root, "value");

        printf("Sensor: %.*s, Value: %.1f\n", (int)cjsonx_str_len(sensor), cjsonx_str(sensor), cjsonx_num(value));
    }

    cjsonx_doc_free(doc); // No-op since we used static buffer
    return 0;
}

Benchmark Results

Benchmarks were executed on a modern x86_64 CPU (GCC -O3 -march=native). We track Parse Speed, Stringify Speed, and the Peak Memory (Maximum RAM allocated during the parse operation).

Note on Memory: cjsonx uses a Flat DOM approach with exactly 16 bytes per node. By optimizing initial node allocation capacity and performing a shrink-to-fit step at the end of parsing, cjsonx now achieves the lowest peak memory usage among tested libraries while maintaining high parsing throughput.

1. twitter.json (0.60 MB)

Library Parse (MB/s) Stringify (MB/s) Peak Mem (MB)
cjsonx 611.63 1546.55 0.92
yyjson 756.00 3922.39 1.20
cJSON 283.91 414.75 1.23

2. citm_catalog.json (1.65 MB)

Library Parse (MB/s) Stringify (MB/s) Peak Mem (MB)
cjsonx 1156.58 1990.31 2.13
yyjson 736.33 6539.28 3.29
cJSON 267.55 755.45 2.57

3. canada.json (2.15 MB) - Heavy Floating-Point Arrays

Library Parse (MB/s) Stringify (MB/s) Peak Mem (MB)
cjsonx 303.56 272.62 4.76
yyjson 754.31 606.38 7.87
cJSON 71.25 24.91 10.20
View raw console output from bench_compare
tiw@tiw-CachyOS ~/Public/cjsonx (master)
❯ ./build/bench_compare benchmarks/datasets/citm_catalog.json && ./build/bench_compare benchmarks/datasets/twitter.json && ./build/bench_compare benchmarks/datasets/canada.json

Dataset: benchmarks/datasets/citm_catalog.json (1.65 MB)
========================================================================
Library    | Parse (MB/s)    | Stringify (MB/s) | Peak Mem (MB)
-----------|-----------------|------------------|-----------------------
cjsonx     | 1156.58         | 1990.31         | 2.13
yyjson     | 736.33          | 6539.28         | 3.29
cJSON      | 267.55          | 755.45          | 2.57
========================================================================
Dataset: benchmarks/datasets/twitter.json (0.60 MB)
========================================================================
Library    | Parse (MB/s)    | Stringify (MB/s) | Peak Mem (MB)
-----------|-----------------|------------------|-----------------------
cjsonx     | 611.63          | 1546.55         | 0.92
yyjson     | 756.00          | 3922.39         | 1.20
cJSON      | 283.91          | 414.75          | 1.23
========================================================================
Dataset: benchmarks/datasets/canada.json (2.15 MB)
========================================================================
Library    | Parse (MB/s)    | Stringify (MB/s) | Peak Mem (MB)
-----------|-----------------|------------------|-----------------------
cjsonx     | 303.56          | 272.62          | 4.76
yyjson     | 754.31          | 606.38          | 7.87
cJSON      | 71.25           | 24.91           | 10.20
========================================================================

tiw@tiw-CachyOS ~/Public/cjsonx (master)

Analysis

cjsonx demonstrates significant parsing throughput on large payloads, measuring up to 1169.02 MB/s on citm_catalog.json. This provides a performance profile comparable to, and often exceeding, modern parsers like yyjson during tree construction, while dramatically outperforming legacy standards like cJSON in computational speed and maintaining the lowest peak memory overhead.


Community & Guidelines

  • CHANGELOG.md: Track all new features, bug fixes, and version releases.
  • CONTRIBUTING.md: Learn how to build, test, and contribute to the project.
  • CODE_OF_CONDUCT.md: Our community standards and expectations.
  • SECURITY.md: Information on supported versions and how to report vulnerabilities.

Development Methodology & AI Assistance

Building a memory-safe, SIMD-accelerated C parser from scratch involves handling incredibly complex edge cases — from vectorized bit-masking and memory boundary checks, to IEEE 754 catastrophic cancellation bounds.

To achieve this level of stability and performance, this project was architected and rigorously verified in collaboration with Advanced Agentic AI. AI was specifically utilized to:

  • Stress-test the Eisel-Lemire numerical engine against extreme floating-point edge cases and LibFuzzer.
  • Assist in designing the memory layout and cache-locality of the 16-byte flat arena DOM.
  • Architect safe, zero-cost language bindings and object-oriented wrappers for Python, Node.js, Rust, and C++.
  • Automate the generation of robust cross-platform CI/CD pipelines (Linux, macOS, Windows, WASM, ClusterFuzzLite) including memory sanitizers and static analysis.

However, human agency remains at the core of this project. Every single line of code generated or suggested was manually inspected, audited, and strictly verified. The core architecture, algorithms, and memory design were meticulously human-planned. This hybrid approach — combining human architectural vision with AI-driven debugging and verification — allowed this project to reach a level of engineering quality well beyond what a solo developer could achieve alone.


Author's Note

I'm just a kid building projects as a hobby. Thank you for showing interest in my little library! It really means a lot to me. :)


License

This project is licensed under the MIT License - see the LICENSE file for details.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cjsonx-1.4.0.tar.gz (39.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

cjsonx-1.4.0-cp313-cp313-win_amd64.whl (149.1 kB view details)

Uploaded CPython 3.13Windows x86-64

cjsonx-1.4.0-cp313-cp313-musllinux_1_2_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

cjsonx-1.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

cjsonx-1.4.0-cp313-cp313-macosx_11_0_arm64.whl (177.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cjsonx-1.4.0-cp313-cp313-macosx_10_13_x86_64.whl (182.4 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

cjsonx-1.4.0-cp312-cp312-win_amd64.whl (149.1 kB view details)

Uploaded CPython 3.12Windows x86-64

cjsonx-1.4.0-cp312-cp312-musllinux_1_2_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

cjsonx-1.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

cjsonx-1.4.0-cp312-cp312-macosx_11_0_arm64.whl (177.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cjsonx-1.4.0-cp312-cp312-macosx_10_13_x86_64.whl (182.3 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

cjsonx-1.4.0-cp311-cp311-win_amd64.whl (146.9 kB view details)

Uploaded CPython 3.11Windows x86-64

cjsonx-1.4.0-cp311-cp311-musllinux_1_2_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

cjsonx-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cjsonx-1.4.0-cp311-cp311-macosx_11_0_arm64.whl (177.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cjsonx-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl (180.4 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

cjsonx-1.4.0-cp310-cp310-win_amd64.whl (145.6 kB view details)

Uploaded CPython 3.10Windows x86-64

cjsonx-1.4.0-cp310-cp310-musllinux_1_2_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

cjsonx-1.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cjsonx-1.4.0-cp310-cp310-macosx_11_0_arm64.whl (176.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

cjsonx-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl (179.3 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

cjsonx-1.4.0-cp39-cp39-win_amd64.whl (145.8 kB view details)

Uploaded CPython 3.9Windows x86-64

cjsonx-1.4.0-cp39-cp39-musllinux_1_2_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

cjsonx-1.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

cjsonx-1.4.0-cp39-cp39-macosx_11_0_arm64.whl (176.8 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

cjsonx-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl (179.4 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

cjsonx-1.4.0-cp38-cp38-win_amd64.whl (145.1 kB view details)

Uploaded CPython 3.8Windows x86-64

cjsonx-1.4.0-cp38-cp38-musllinux_1_2_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

cjsonx-1.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

cjsonx-1.4.0-cp38-cp38-macosx_10_9_x86_64.whl (181.1 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

Details for the file cjsonx-1.4.0.tar.gz.

File metadata

  • Download URL: cjsonx-1.4.0.tar.gz
  • Upload date:
  • Size: 39.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cjsonx-1.4.0.tar.gz
Algorithm Hash digest
SHA256 611f9a9aa7788e7ae08777a9bf662bc253c2f2b4d2e7cdd08063369581ad15b6
MD5 c68c8e717583fd0834e99ea9243aa536
BLAKE2b-256 cf8761cab5153ba4d781e118a58c82f34c30dc9c485c47443b8ed8851e2109e9

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: cjsonx-1.4.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 149.1 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cjsonx-1.4.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5571084363c9cbf4ccd65f6cc8f7e02869f3526dd5f5ee54fe8ea518183296c7
MD5 d9ff6f5f96c346c9d886ad1d7e4ca383
BLAKE2b-256 cde7b4c39301add6108aaf800c6552007be98a6481337694c9b14d42ad9b2608

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 43b98a4a7cffd2d48bd400cc694ba89b8472ef44bf29644ad21ac55a0f34bf47
MD5 49935b40bf09452d32f9a4244b1a39b1
BLAKE2b-256 e3dbd2f27ebbf268958c46c3e54c8c6cc5bbd9bc8a7411c96ddb40118a6d05fb

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2d1ac79ad414764883fec0a03c1360edda690d92be2f4c75bb37e107a7d88bfa
MD5 fc1ca7072335a2880376f43512c116ba
BLAKE2b-256 ee689850b3728c49883a850698753f25ce9466ab484096c71dd79accf02b0fc0

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c77cf9f072dc6ddb8f0a34e3ccad00d27540d129e68bd41a04b146bfa8b2a622
MD5 19d7ed0ac53110d4feae69f7ed16a93a
BLAKE2b-256 f377d47aefb4e7ef5adf2a12aba84f1b1370b0d551413ce03be53a755bdfee91

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 d6902596e0e30323fe9c705b63783005a23c6ebeb6734cb748e40c4b7bee1b96
MD5 a84d2e201dc0736bd199cb8cec4a03a7
BLAKE2b-256 e7d16acdf20e9939d76c12ef64e43784921debdfd55a2dc7fbe478f0bb4e3ff4

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: cjsonx-1.4.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 149.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cjsonx-1.4.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8457dc71f68950d2722f0b48d9a609a2c50589eece3bb9fa8e5126a206b9b24f
MD5 ee3e4577626534c8f33cf827b346fe0a
BLAKE2b-256 c71b24049bbcfc8ca71f7ddf940738e5a88bacb982eb9e259bb01323523cce66

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9fadda0332952c598fa66967b08a51bfaa42964302698cfdcb3b0de053cce387
MD5 4a8e2521e3b490e4bb2a5eb562139a79
BLAKE2b-256 8bbfeeddb8a93326d39eb23931360529ff5b5689a42020f5a420ff6bab6933bc

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 423d98390b29477ec47b9c80fe42fc5ddddaff918a017683d57a80292ee4bc9d
MD5 cb605384d5529eb70758b0d1027c25e0
BLAKE2b-256 32fa1b6ab0d4524e2186f02ec7942526af0efa7b129858ed03b76370e58a7dda

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 57c04cc6480464e625bd849dfa9af9f6596663601e7a328d42f4c3e90676e5f7
MD5 906616fe122b9ba669ee33f6dfb185b1
BLAKE2b-256 fcc22a81aa4fc185a99d42e8b06e36f1b8a948cb28021bcffd3ac431aa368304

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 2d94c165d925ce27918bc590130972ddbab7ba0028230626e266aba700d7c7f2
MD5 692066434df0aaddb8495e5dd33f0bfe
BLAKE2b-256 d0f4f42f89dee94359520745d62b499e1e06dfe44ff51284d05e10c5e4aad766

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cjsonx-1.4.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 146.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cjsonx-1.4.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 77a453c13aa22db6a9101628ece37b7a8c285316c9fdc11265d380b28d58aa33
MD5 a22d73d5d242a1b2973a9cf54a8b1353
BLAKE2b-256 888f3474c87caa3519e09f92cc125242cff9a3b6c1450fdec3ef26712d0d88fd

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 268d0fa86d65b59aad211b95c151c7ff69a8fd12be6e0a7e115ccbd81681a2e2
MD5 21d3ddba2feccc62a05d791c36fbc934
BLAKE2b-256 5c75dd78014f3b3f8453da805f6a655d1aa5d44024b6eeb6e4a35ef65335f781

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 28f7a3ca308aad1b0df315856a7a88238dc8c94976d71537a59cc4e727367932
MD5 d332d1e2d985045f1d1e3a6f11abb404
BLAKE2b-256 a56a50dca465c7f008d401dee6df6528b2c3e8979cd2fa482a9345d5e12710f1

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e862904e01b0887370a656eb5aae2449ad86cd630e235245b5176cdc524112d8
MD5 e8712548ebd44f8821cc20379cee939a
BLAKE2b-256 e42b657d24bdc23031808be31b2bcafc0517b64c03d99c83e1d8067e2bfc4c4f

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9e5f675700267b515b66551355e4fea2cb900de205fa760c634072316fff2a85
MD5 eb193dd1842ee874b549ca21ef607dd5
BLAKE2b-256 a72b1d4985f54b871a30e2466cff3b4471f3f6f021888e46db546028ac4e1829

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cjsonx-1.4.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 145.6 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cjsonx-1.4.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4094b3a84d3fbae8c1882be023470f3efcf713e03f0cc137877e99f748d417df
MD5 4a6c1183ccf114a9949d9c5bc3c97697
BLAKE2b-256 0c168307ff04f7e4bb675f27a9f04fac803cf32a7ad27f108d6926d190714f18

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 24e04c90dd1ee9eb68fea636230fcc6756d2eaf22f11356cad889ef996a44630
MD5 5c25fe67d6998ea8e23143bc266ddfc0
BLAKE2b-256 abf49903d280e2e79dec0fe4e016aa95c883d59b08cebc18f9be45ecf7abfd97

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e15d6536423795620e068b93218e901df18bc926b1e80fd723ecd81f138361b9
MD5 29b0e425b68f960651076c363d200f96
BLAKE2b-256 b91e20175234d8a599f48a30704343b10ec3f1e19a1a5873d20c60a9a05a5dce

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2edb7c9a4678323ce058a1a0ce93034cd719e7a772a67a78dce24b589ecb63f4
MD5 11f55824e79c9381197f2579a19744e8
BLAKE2b-256 2136859f9017506366182e36c73d39b4a6162b27ef4710c3491537e6e6c80744

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e1c33cea1d614ea9f9954a0008e536931fd5997b7ba327708786120bd19da82a
MD5 30ee3e78f16f0f8292368ee5d74127d9
BLAKE2b-256 c285102604322bdd0939b70ee0c24943d1b44772b25ccca65e99c7a63f9ae365

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: cjsonx-1.4.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 145.8 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cjsonx-1.4.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 57db0f1c3ad1d237dce4a50ef29ee04bf2d1e24c9634bfc04f63a618c4ae62a2
MD5 37838efd8ed4c96957f341eac2ec785e
BLAKE2b-256 1da4edab1a213f994fdb81b8c2a09f0dcd48b1590e93d85fb0125b54456800e2

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 037393bf381f9e17cce708986cece5013892679556d3bbfde216c5d3dd0474c2
MD5 38fadf2a961d1b8453b94257b3d05069
BLAKE2b-256 bb1306b1b9db23a72e6c3de5f6a34249e0e02a6d3c9b85259b9bcf2a010d6753

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 96cf1c797965c285aa908d2b2a20f395644a7f5e12c5c922688135aba5b59726
MD5 82710522f3dd6cf49c5a3d6b2e8479ad
BLAKE2b-256 723613389b3e5d3165b6f51f99a90c9f87c1f632b79f1537d9f76fdff5d20838

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e7cf315c4914ab27c4443685a088d6965eec16d19a60c2385f88a41d918a44c3
MD5 948fd505377520a1cd3a8356570f0070
BLAKE2b-256 3ee6b5b2ef6fa808b970b19e6e0a0e8bffe0f159527b34e8e33937e04802fcee

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 715a0ebbc1fecae3f39d66524bcec68441b66a5daf0341c21136b2e597b87b0f
MD5 a97e7baeb2e731415a2e0f7a6d156caf
BLAKE2b-256 cbc744ecc8c2441b72f422b6fd0248d5a029598e758338a0da15a6a29f202758

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: cjsonx-1.4.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 145.1 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cjsonx-1.4.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 690e87e5e4ed28bcc14d1b39b248ff9781eac0dc374058db6751073a51b80138
MD5 59586ea7e12d0eaa3bb8fe6eddcc64c7
BLAKE2b-256 8a8a9791ea97612343cbeebf6324a92b32174857b4e4591f6c1f83e97304b7e9

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7a0235688aba54565793537411b0a934f1802758f1875912a1c9600e316e8040
MD5 b7a77d058fcbbda4e3b32608863e2954
BLAKE2b-256 727df41d30be3e559e7f93b8317fb9f837fc348f6ced5b39fabb02cc59059499

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cb2b046af2719137ba504be8078b097bfd7a5f83c59b306efa46dd3061daa801
MD5 704eacffe77b1143952b57255c887cbd
BLAKE2b-256 691dbc044a1a72706e5974a5d30d35b857e81a239de5f9c5d6ea69276eb51c81

See more details on using hashes here.

File details

Details for the file cjsonx-1.4.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cjsonx-1.4.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1adc489315d234fa1b45c364857c025f0082265f74cba917b2cd007ad99d35a7
MD5 1e64f3421c1c9723ea040db9093bdd81
BLAKE2b-256 e3029b88c1de3791ce8d6294295ef492defc1a364cf945a1cbb51ded9860cc11

See more details on using hashes here.

Release history Release notifications | RSS feed

1.4.3

30 files

1.4.2

30 files

1.4.1

30 files

This release

1.4.0 This release

30 files

1.2.5

30 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page