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.1.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.1-cp313-cp313-win_amd64.whl (149.1 kB view details)

Uploaded CPython 3.13Windows x86-64

cjsonx-1.4.1-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.1-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.1-cp313-cp313-macosx_11_0_arm64.whl (177.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.13+ x86-64

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

Uploaded CPython 3.12Windows x86-64

cjsonx-1.4.1-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.1-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.1-cp312-cp312-macosx_11_0_arm64.whl (177.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.13+ x86-64

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

Uploaded CPython 3.11Windows x86-64

cjsonx-1.4.1-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.1-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.1-cp311-cp311-macosx_11_0_arm64.whl (177.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.9+ x86-64

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

Uploaded CPython 3.10Windows x86-64

cjsonx-1.4.1-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.1-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.1-cp310-cp310-macosx_11_0_arm64.whl (176.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.10macOS 10.9+ x86-64

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

Uploaded CPython 3.9Windows x86-64

cjsonx-1.4.1-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.1-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.1-cp39-cp39-macosx_11_0_arm64.whl (176.8 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

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

Uploaded CPython 3.9macOS 10.9+ x86-64

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

Uploaded CPython 3.8Windows x86-64

cjsonx-1.4.1-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.1-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.1-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.1.tar.gz.

File metadata

  • Download URL: cjsonx-1.4.1.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.1.tar.gz
Algorithm Hash digest
SHA256 6b4fd0bb06c09b80cc8617f279966f7166c774c16624f6bcdeb212d1913d69b4
MD5 97dfaac85b97b468f24d223f1c0cb225
BLAKE2b-256 2735e1818a740a734a7f1306c488b94dc3ab50379ebff46561b9a9a4201d65f5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cjsonx-1.4.1-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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f03abe08f43ee00db2f23c95d8893f78919a41cc17ff56990dcd2f08d1cc4c2b
MD5 7bdc38527b87990e06640a165bd081c8
BLAKE2b-256 558c0311ce7147473df177df13cc05a4dd71c4f900817396dea3f865b0ce34eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 598c20ef6c148af333e4b66df3da53f9dda1ad65b51bf43aa6d2e77bedd5f86f
MD5 fb40dab9220789b891186acf27399076
BLAKE2b-256 b4c10f9f4fd4b4f0faa21ba617fd02103c978df9cecb34fca48717701afe9417

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8087ca7631e139308bab3c5a2c4383b7510c97061fab8728148cce3eac025717
MD5 f1485c11eb604b71b352169e096d4e32
BLAKE2b-256 3702f0c72d17b425daa34f1b7de0ff81630934c1f64541b84e5c3ab80b198731

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 448d129a61a2cc9f282c729f19b4014aa50fa09a8bd56708688841c01478c9b4
MD5 1fc4476082ce8e7baa4bb168cf39833d
BLAKE2b-256 ff8a152a5028064a8c6cc87845d6bdbfe98d2009b6d9565d63bc67e93c10b4ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 241b9d5b664d2096f0977c273a568803aeb8c5fdf499412bdc8e8f058915228d
MD5 41cc6e427d1f0ea3703e9b4334ab04b5
BLAKE2b-256 27a9e7be812f0b7b3ad2ed1726de85615b6e1b37a85cbfc155d7d07b599bbb4e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cjsonx-1.4.1-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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d57db60fb0a8d58c150fe4fbc6214758e13dbeddc0319aa8422eec3a220c648f
MD5 9013fd81866df57b812d1c6cd6f1eeaf
BLAKE2b-256 b744eb778f799046e91e234fcf65e425f44dc5abf5500eba4cb4007862cfb4b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 69e160d2fafd8312dd3e822ec7c58c990d9b8fa151021eae949fc9102d42c006
MD5 fd44a2782bb2a54601305912ba2b1f76
BLAKE2b-256 1f3167a115219613457cd861477723da98b3304bcae39c439bc840af4783d1de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e6b032fd21b7dd7cd5b59445d4e3faf07081158f5bf1389ea8235935bb3bbd46
MD5 6b332b9e3b75a17964c0452d64d2067e
BLAKE2b-256 c068718dc244ee401a6dbd5148e5c77f1975fcd71e53b0459c17480ee61fe07e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6cf2852754a2861bad7dc0ffadfec6fef6a100ea8974fffe12ab4f710fdb7b5c
MD5 273bc3606d15f52f0335bbafb0ed172a
BLAKE2b-256 1fb7c2af3cdb6bb759bd8cff2def094cd48930b33749f6c2df77403bafc62d29

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 2c0d12920672edd313cb4791033a9ab85bcfdd7d32461bfe5b6f50fa264c26c8
MD5 5dfe86fa96df2440c0256b8920c2f2e8
BLAKE2b-256 74e1b4a92c845b870267208a7f3da82cf0802d5c0221a3e897055bfdd0a08e52

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cjsonx-1.4.1-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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 65f798c16b01452bd7cb912116bfd980374ae734cf940940f9e6cec9cb553fe5
MD5 53231bb256e5fde42f99357ed0c267cd
BLAKE2b-256 faf3c5c5540d417b733786c18a95fcbc49e8e6034433576e062645755b0b7a83

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0111d3c3002c997930ded26d6c1324366f0aa9db1d64109b609c46eb1efc0fc3
MD5 545fb050e388ec920086bef58b542130
BLAKE2b-256 da13300b5c97198788e77d0f5a580b96083efc85f566c250bc2a06883242fbeb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e38063dd43745e51e2cd53481a72e6a73f61cf53202329d269944a89b24bcc97
MD5 f401392c2014d1caaf9a30dd8247404c
BLAKE2b-256 c77fca397ce65fece879a616dbc9a2dc0692c5c507b7a30b9b8051872a77f691

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6a313516d0b70d03de5ee2abfba95352814f66369b38a106f3c0f59156603134
MD5 c3d334b0e26d34ab95e29e104f794f2f
BLAKE2b-256 e010ba62e35aadef623e103f7b1d417c6b17175da44eb5fdaf865733ab9392eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9535fe71230f40e64c865ed8f2a560346ea57afd96e03d1df3c4a553e25016cb
MD5 efdca6b306fcd85ec192546eff05e4f8
BLAKE2b-256 35db73d102faa8832faf8a2627fae62799a46f2d2ab34e7217f4b32b2040714d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cjsonx-1.4.1-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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 10db7f78383ee8cd737199605606bd3b9fc19d60d883f0ea83ff711a2e6c7d74
MD5 309ea0838fcde45c0ce6c260f62b10bd
BLAKE2b-256 f0fdc8ccbf2908971c35d6b2473ed515761bd3c6d76f2f74578e1e26ca8acce7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 602b420d802423e9c9389712fe886f20780b8ed03e33a69fba069efa6d197af9
MD5 7a130c02feea798e1ae473fd47ee7e25
BLAKE2b-256 e5810a7f94a7c566e30e5533c68f2c9e2183ae8ed9693d00144fe058e8984006

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1ecff70f62d98c41bab5d28ccc2e5189e76838e4147955b2120d43e077a065d2
MD5 84dfb625147db22005df6a336b70e879
BLAKE2b-256 04956eefeec06d9f50b4941e0fac8258f9de8fc068967ee80c1878d0dce7e026

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2a21602d6e1e535be87c890511e7bfc51f2fb79bf21d49bc4bcf205c04fdc1f1
MD5 fba2b19b893fbbba71288aa2841b5266
BLAKE2b-256 650ebdf241d6941079499fb1f817f3b6b98b5bf0ecba6b7680a439070d5500b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f0459d4093501f854b5694056293849a8aa3395d962e17c61cfc4d51b5a3722d
MD5 e2c49d5b2441011d8ad86cfcb277ddb0
BLAKE2b-256 1caa1a1a66a130da0b8218bd045a1382fa10e540faea2ae76fd8283fdc83b290

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cjsonx-1.4.1-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.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 62f46546d735464e46ab8319423014693de2606b1d9e81d5ffc18df39c839065
MD5 40dcc126d1b17d1575b9686cf0749b28
BLAKE2b-256 5f8d20bf4c6fcbc46903c5e41705813087f6a75da1929c353880f6d1cd8bb66a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6bf913c8376dc93ca831440968d19e2a40e935f16c79dac1ef8b3ecc8dde549d
MD5 0a73a000a3d78eb8fdbaec1530a00b4e
BLAKE2b-256 dddf4ebd3a3cc40f0a3aea1af6b5ab6f43ca1f5b2096fb17ec4141158b4f6471

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 69015941f87907fa4b1c9c1c3a7c00ce7141a634834995ee8bd3a7807f106a7f
MD5 8e20613270d29787429dc2c3fa45538e
BLAKE2b-256 6179bc117347b7a9e179d0b83d20e5b47d9d08ac18736170659747054e5ad063

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9283ba5d598a4bed87dc98e39c745704a0b0f4a24cbddccb9cab14e30940a15b
MD5 c58521652283506b863f7d8777592123
BLAKE2b-256 007c9ded8e400f0897f6f3c560236ae6489f967e02dfe1c3ecad9fc4b7557b08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7f2ca95d2fe4013e50d379f2dc8fa6606961a4b386c693c31650159a163542c7
MD5 8f0c9669e6aa7e2bea990442a47ebe2f
BLAKE2b-256 9ef15a603861452f4f297e828b57c88b42913457c9e4f2c2afecab02cb4c78ac

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cjsonx-1.4.1-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.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 5177b2066cc95e47ac606f84391bfb9a4289336be6bcdea1133539feb00cf8e7
MD5 5997234aaf4c8cc75fbbcfdda20aa838
BLAKE2b-256 edb416743fc8c5e9521dcfa7fcbe7cddedee25ee24b42927e36bb1a48b0ff665

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ec940b795e82fc49c653c9609ae01f0892836dcfb4f76df553b4dd96d6a843b2
MD5 86c12d7747d5f3adf2842f8834ac4c6c
BLAKE2b-256 ce40e5fb5cc2391d355ce2c6e61bed663bdb743b51949c402b9c07c8fcfebe6c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 98cf441089361c9add992b4f9f3513457abfce0ced40f96b9e130ecc183e8fb0
MD5 f1f87e0cba387f689dc50877455e69a9
BLAKE2b-256 591545ca85a8f336eea47d59d7d351e4c070b7b3ffc48fb220fb31172d4fa91d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d23ee41e827ea44fa8f3a445f285d21c1b7504c7d285a8486f75fd0fb8f7bf10
MD5 637d4afcf7639440690adf4adbcc500c
BLAKE2b-256 f86b034dfccb4bb8173e40db55df2c1072c19941af274e50659285dac09ade10

See more details on using hashes here.

Release history Release notifications | RSS feed

1.4.3

30 files

1.4.2

30 files

This release

1.4.1 This release

30 files

1.4.0

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