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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.13+ x86-64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.13+ x86-64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.9+ x86-64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.10macOS 10.9+ x86-64

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.9macOS 11.0+ ARM64

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

Uploaded CPython 3.9macOS 10.9+ x86-64

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

Uploaded CPython 3.8Windows x86-64

cjsonx-1.4.3-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.3-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.3-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.3.tar.gz.

File metadata

  • Download URL: cjsonx-1.4.3.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.3.tar.gz
Algorithm Hash digest
SHA256 a87322ef2c2e70570d15c92da2173175ed2917d4ea7f8b42e4a0559e29f10157
MD5 a359df61cb6568805a150c7ef44016ad
BLAKE2b-256 76ff76addecdc596e2203f4d10963e80876038eeb98f125d2c53e400c2445234

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cjsonx-1.4.3-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.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9ee64f3d8fa2fd3244f407b88790eab97fc9748d80dd5fd130c7dc879d3d1084
MD5 25db53bc645827486928df82b7705dee
BLAKE2b-256 a7e548838654ee6dd56c7ab5ae5c8bbed77df0e59bee0a445be65b22060156ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ff5c26ca9c78001568a0fd8dcede9f2625ad090c1bb63c14f9bf0e70037beafe
MD5 6e40723009a8e3e33b15b7402a9020f1
BLAKE2b-256 cdd5dc299b507e84df6e6fdc30381eb5ea718002e86f7e3bb5b5efcf84f57ad1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d2cf664828b7190635936196bce8a17a6870f9818cdd7b5d41c6eead47c9b532
MD5 69b249cdc7ec3f507ca0d73c3f88cefe
BLAKE2b-256 a826a1246be6a9214b4ea38ff98b806e906d6dbac1f1ddd441fd470b91d73174

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 221008093790e1868b14ebb7b20f8e320b7e03c925d0fddf2cdee6328a25dce2
MD5 3f8379a47b5d13c1a08b3e66b68f581a
BLAKE2b-256 36114e0d20add0fcf0c6b5ed4e96b020834d9e0dc7775c215e6003de10150fb4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 aabeb631e4f9f40388e27534115a324d0ef94fe0435209761e06f39eeb908de0
MD5 0dd801de062dcb2a53245db2683b7d2d
BLAKE2b-256 ba377db04cf82158a3b161e09b805a1aa2bec1189fab4ca38b95b27855fedf96

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cjsonx-1.4.3-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.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f58549b843457d2ff28813c6ab71dc43c268e2fc181608b9b2085fbf50ee1b62
MD5 1c4408373c91e03f556851e5ce340dbc
BLAKE2b-256 598f8d80af1d81dc4df962454dfbd003bae94f6a8657a2813fda8a52fb992a01

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8be067eedcb07d4342a9b602526de560f7877eef19d6d15aeb7b2aa796c656fd
MD5 6c9c60ff345596fb00db244af9f09887
BLAKE2b-256 f1efe8fe50ae3ca7f9654fee92fbe11a97858698aea8811c58cfb9e0d050d579

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a876a97435e79bfe53c810ccaa17fadb4022a4f4a0860b305eb9cee120456b0d
MD5 32521ffcf9803ed7e92a22d2613df512
BLAKE2b-256 7d795df9486c067c99bdb8bb20bfa1cba79a77d2aeff838e9c993bc7f13863a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d8a24db4e3ff9d2f54b3b725849711191d14403ed17f32db2e6dce6094b2b661
MD5 2e058e9c1e63fee7a065cc6483e63ddf
BLAKE2b-256 939a8e31b8b67586efbb7ae06c052b32724523fb8705a46e650bfa22c735cab8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 82a4ee51d6c2cb07380ea39049edce9c8be68ecb637016d78e0ecf8b914016bf
MD5 1a4fef23142f3a217ea7b9873eab48fe
BLAKE2b-256 db01f7e48750910e0de46449eb6e58a4c4a1f0af164c74b1e621a86730329aef

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cjsonx-1.4.3-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.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 46a7341516ae5d230c71bbdae3ae28677a18aaccdb78c0e4c891e107c675332b
MD5 2c5731935af596f9d616ed4b403b8c17
BLAKE2b-256 9a2867debf656693f13fb310996ce1f17234ab4afdc35cc4d5494f5c41fb32d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bf728903f65fcd3ac760e97431fc209663818a7603db3260fee4d8ad314cac1c
MD5 470ef1e3a31569166a64cf433e9bcf6b
BLAKE2b-256 315b9688b219d5405aa5614aa857fb03cfbef37d23443432497f969b8d1402de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6ce63645b5d21275b1f77f60a423e23fe0c3279d9706e4d61458fc700977b0fa
MD5 d71cf76a8ed2b5210740fabfe3b28629
BLAKE2b-256 4511e0d4b9c2505897df7235409a21a36cac0de2373e63fb92acc43fdbf4199c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d63c8d989a781c2b7570f4c61cc8dcc18f15aa30c98a4823bffcf1850dd0ac33
MD5 8cac816644577254e3fe72ec0df91762
BLAKE2b-256 155f163835a2628cee615dfacdc0f4ceedfbe21611becbc7f8f9e71ba7ffef89

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 43eb58ac4ce81d42a8677e2357086c4c919d0f3e3127f3ab694fd08396ab3bdd
MD5 5301183601db01d44fd3dd934dd9f5a9
BLAKE2b-256 79682303376327e835d5496dabd5f1efdadeabc8ae7af43473abdca8b8cb2b0a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cjsonx-1.4.3-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.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7ae1cf8e376391b9b676111307eef20730491807400223490496bc1af061bce3
MD5 1805e2f3f89eab9d5467f4b4ab334e18
BLAKE2b-256 189fceb8c88230979da10af36f2aacac3b0cdfc3aad0a468783497aec1a3b497

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b5bfbe938bab5e70a0f5fb8ae25a987d74d8eaa3547074170eab129dc31a0780
MD5 7581b5876d287b820941dd6a29a0eaeb
BLAKE2b-256 ea3db82b493b2fd03d72025e7e347f2be616a977af90f92787cb544eff04607f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bc5768b798f3763b98cef7f443e3dd96014edecddb4efa5f798c3a5cb80a6e8d
MD5 bdefc0ad779ff0195b7feb37f91e9985
BLAKE2b-256 594b8b52b09a3272671c56f6701bf143af2e141f031cc173bf8afbe725cc79f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fba2314b57b077ce1aac069362ec584359aa02661bbd0e62d0e5baa4299d1905
MD5 85a2954c647bc8fc9483b73f4e5baf05
BLAKE2b-256 2c4f135977383e882e726915fe87db5b4a4eabcfd4e1d3b186b74348ffe108b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c355b7391a9c7bfc93d24aae3db259e3d71088be9f74812a583a61d263b9b868
MD5 c46e2a0e583fdd076abdb8b00e1d0c11
BLAKE2b-256 a261a8af2a2f1b4fddbb0266f6c54c1487ba65a59e35730070ca7c350f4fde13

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cjsonx-1.4.3-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.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1a92dad2624d5ad147a5eb9d22434d688b58dd4d18e8225df50d95a1ae32558c
MD5 4dc2abe29466b4756a78177789d59451
BLAKE2b-256 e5df0d37a9702e81c2eada1b0bb8aa9e2aba899a13ef43f1d795ab320fa241d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 76f81c74c17989854e4e2af548a5cb55364232f7c9960bc02f41600de159843f
MD5 8d50909f002d56385915dd004db0249e
BLAKE2b-256 41485f15e07f9e4fca8dcd995a60fa62d91637c5d210ed12aea8f426315c64d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f09b57eced54c9349b90f8a0340765cea299129fddfeb17124cc8c95f2b2adbe
MD5 384002fae3c961c417d2a21463ffd581
BLAKE2b-256 a9fd31ea1485e8c8a4815905d70cd481491d529e8c856fe930799463dffcb934

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8f5024b7bb9af248ed2c24c848c21e9dd30a51a7784340bf983da0d1e931a1ef
MD5 1fad762e97db80f11fde516fab341a2d
BLAKE2b-256 c1558f09cb29f50013e1b011da832f1d11bb10d61dee036cd0ed221183d5d8fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3edbe779526e010a1304f8fb085dc6c5894c27c05c9135789ef064b2811310b5
MD5 4b8917b92dc5bd7b5e08688cb524413e
BLAKE2b-256 96527059f169b87fad4b1bb78212f0ab8082283c48260b60dc3382981da8e875

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cjsonx-1.4.3-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.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 cb808b9bed3b0c8648096b6ff7fe8a5855e63d4c454befa70dd3b25cad07dc29
MD5 b7bce998daafac45f351f2071754afd6
BLAKE2b-256 fb52964279f77f331164155947bacb948ad861918da84a1c77ea19153e78ad63

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 176c2c56de8d1115a1eb8ba9c2ba820d65157883bfdeb71091a6c2bbac33ae41
MD5 75022a99607b3fbcbaa407a88ee96939
BLAKE2b-256 efe40810d6ac68f41a951b5f752183579a7eaa956491bb9f9e7ea373c2e906e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e35dfa53e8b26a1db2b737062cca8e22ba4dc4c81ec0611ada5dcfb5017ff6f8
MD5 a309f33a353a5ddb23f050c71550401b
BLAKE2b-256 0636e213e2ef544ca36d117ceab5d44a7b721d2e82f4e3666bb8e3caf9a37d2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cjsonx-1.4.3-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c3b9db2bd056700a653a0bf1695f336f1a135aad8be63826162f7d557c4eeb56
MD5 19d64c5fbf44f3f3c145d5cd112bbc9e
BLAKE2b-256 0c2e73acef47110b1868ed77e161818d600d2cf076056b04c351cf648c853110

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.4.3 This release

30 files

1.4.2

30 files

1.4.1

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