Skip to main content

JSONofabitch

  • fault tolerant json parser
  • JSON correction/formatting engine
  • stochastic ascii structured data format
  • a standard for low standards
  • the retard proof multi-parameter, multi-type input parser
  • a troll of api scraping reverse engineers
  • a JSON of a bitch!

functions

  • loads() - loads JSLOB compliant text
  • dumps() - dumps regular JSON
  • correct() - turns JSLOB to JSON
  • dumpslob() - dumps stochastic JSLOB

install

pip3 install jsonofabitch

build requires lark but jsonofabitch is stand-alone

JSLOB syntax

  • keypairs - : or = separate key value pairs, whitespace is ignored 'g=5' -> {"g": 5} and 'g:5' -> {"g": 5}, such keypairs are implicitly assumed to be in a JSLOB object which resolves to a python dict
  • keys - double quoted string or alphanumeric plus _-~$@&?.%<>#!^+/*(no spaces,no unicode) non-numeric first character.
  • values - another JSLOB object, a tupple, a list, string without quotes, quote-enclosed string, boolean true false , null , integers, floats
  • 'true' -> True 'false' -> False 'null' -> None case sensitive
  • tuples in ( ) lists in [ ] objects separated by comma , or semicolon ; . trailing comma/semicolon okay
  • dicts/JSLOB objects have keypairs separated by semicolon or comma, nested jslob objects(in lists, tuples or jslob objects) are terminated and separated simultaneously by ;; or ,, , IE: '[g=5,h=3]' -> [{'g': 5, 'h': 3}] and '[g=5;;h=3]' -> [{'g': 5}, {'h': 3}]
  • strings - same as keys, mostly only need quotes for numeric first character or if it includes spaces.
  • scientific notation 2e4 resolves to $2.0 * 10^4$, always resolve to float
  • numbers with decimal present resolve to floats while others resolve to ints IE '3.0' -> 3.0 and '3' -> 3 '3.' -> 3.0

about/conventions

  • the parser is called JSOB(jay-sawb) in polite company
  • the standardized syntax is called JSLOB (jay-slawb)
  • suggested file extension .jslob or .slob or .jsob
  • the underlying parser is built using lark which generates stand-alone python from the lark meta-langauge that defines the grammar

changelog

  • 0.4.0 - add support for a wider range of characters in unquoted strings
  • 0.3.5 - fix handling of empty lists, tuples, improve approach to handling empty JSLOB objects
  • 0.3.2 - fix improper handling of None and bools by dumps functions
  • version 0.3.0 transitioned from using the parseing library lark at runtime to a stand-alone parser generated by lark at build

examples

import jsonofabitch as jsob
d = jsob.loads("f=5, size=big, style=SLOB, coord=[(3,4),(1.2,3)]")
#{'f': 5, 'size': 'big', 'style': 'SLOB', 'coord': [(3, 4), (1.2, 3)]}

jsob.dumps(d)
#Out[3]: '{"f": 5, "size": "big", "style": "SLOB", "coord": [[3, 4], [1.2, 3]]}'

jsob.dumpslob(d)
#Out[4]: ' "f"=  5;  "size"="big";style=  "SLOB";  coord: [ (3 ,4 ), (1.2, 3,)  ];'

jsob.dumpslob(d)
#Out[5]: ' "f"= 5;size="big", style: SLOB, "coord": [ (3, 4 ),(1.2 , 3  ) ];'

jsob.dumpslob(d)
#Out[6]: ' "f"= 5,  size=  "big",style=  "SLOB";  coord:  [ (3,4 ,) ,(1.2 , 3,)  ];'

Release files for jsonofabitch 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jsonofabitch 0.4.0
File Size Uploaded
jsonofabitch-0.4.0.tar.gz 6.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jsonofabitch 0.4.0
File Interpreter ABI Platform
jsonofabitch-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 42.8 kB

Release files / jsonofabitch-0.4.0.tar.gz

Download URL jsonofabitch-0.4.0.tar.gz
Size 6.6 kB
Tags Source
SHA-256 checksum
How to use checksums
bb6f1feedbbba9c2fdfca3547e75d43167beec55bdce5a473e1438eeaf857b8c
BLAKE2b-256 checksum
How to use checksums
630d6528a8b702d427c7f8edb8205b2fbd2258909554257f6890d21ea4254671
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.12

Release files / jsonofabitch-0.4.0-py3-none-any.whl

Download URL jsonofabitch-0.4.0-py3-none-any.whl
Size 36.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ec0d7d0188ac351c35aa775fe93d7beb8e4b98ddc26f484918a99cf34d854f6b
BLAKE2b-256 checksum
How to use checksums
df8ce40e38a4d59a98de456ed540ee41710875f2479caf7d730f8fb2bd3fef39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.12

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.5

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page