bmb-json — Fast JSON Parser
Zero-copy JSON parser and serializer compiled from BMB.
Installation
pip install bmb-json
Quick Start
import bmb_json
bmb_json.validate('{"name": "BMB"}') # True
bmb_json.get_string('{"name": "BMB"}', "name") # "BMB"
bmb_json.get_number('{"version": 97}', "version") # 97
bmb_json.array_len('[1, 2, 3]') # 3
bmb_json.array_get('[10, 20, 30]', 1) # '20'
bmb_json.stringify('{ "a" : 1 , "b" : [2,3] }') # '{"a":1,"b":[2,3]}'
bmb_json.get_type('{"a":1}') # 'object'
Full API (12 functions)
| Function | Description | Return |
|---|---|---|
validate(json_str) |
Check valid JSON | bool |
stringify(json_str) |
Roundtrip normalization (minified) | str |
get_type(json_str) |
Root value type | "null" / "bool" / "number" / "string" / "array" / "object" |
get(json_str, key) |
Get value as raw JSON | str (empty if missing) |
get_string(json_str, key) |
Get string value (unquoted) | str |
get_number(json_str, key) |
Get number value | int (0 if missing) |
array_len(json_str) |
Array length | int |
array_get(json_str, idx) |
Array element as JSON | str (empty if out of bounds) |
has_key(json_str, key) |
Check if object has key | bool |
object_len(json_str) |
Number of keys in object | int (-1 for non-objects) |
get_bool(json_str, key) |
Get boolean value | int (1/0/-1) |
count(json_str) |
Count elements (shallow) | int |
All outputs cross-validated against Python's json.loads / json.dumps.
How?
Written in BMB — compile-time contracts prove correctness, then generate code faster than hand-tuned C.
License
MIT
Metadata
Release files for bmb-json 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bmb_json-0.2.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| bmb_json-0.2.0-py3-none-manylinux_2_17_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| bmb_json-0.2.0-py3-none-macosx_15_0_universal2.whl | Python 3 | none | macOS 15.0+ universal2 (ARM64, x86-64) | Details |
Total release size: 208.4 kB
Release files / bmb_json-0.2.0-py3-none-win_amd64.whl
| Download URL | bmb_json-0.2.0-py3-none-win_amd64.whl |
|---|---|
| Size | 87.9 kB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
f506e2fc2d2d37824024c504f55194947e71b27e9896437d6fb631bb317573da
|
|
BLAKE2b-256 checksum How to use checksums |
792a7e8bf9de74ca58adb940972736a80f2262b6335f4e2b7876a180cb2ec167
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Release files / bmb_json-0.2.0-py3-none-manylinux_2_17_x86_64.whl
| Download URL | bmb_json-0.2.0-py3-none-manylinux_2_17_x86_64.whl |
|---|---|
| Size | 69.8 kB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
c6ca39629535fc18afcbc0d19d104b648e7d0f1149ad22f139784d7ee1e14d0a
|
|
BLAKE2b-256 checksum How to use checksums |
0a7295e1bf8aedb9e1265f10ee0ea848fb08ce733e38b13e52c923fa3588e34c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Release files / bmb_json-0.2.0-py3-none-macosx_15_0_universal2.whl
| Download URL | bmb_json-0.2.0-py3-none-macosx_15_0_universal2.whl |
|---|---|
| Size | 50.7 kB |
| Tags | Python 3 macOS 15.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
a9c7169cd9bd974e92db2e3f00a25e8b9da673d65a2341d6f1463121d5720e44
|
|
BLAKE2b-256 checksum How to use checksums |
e5beb86cde00632ae2aac95196760fae9cac149674ceb5904011e931e2e25313
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|