Creates fake JSON files from a JSON schema

Overview

jsf

Coverage Docs PyPI Latest Release
License Code style: black

Use jsf along with fake data generators to provide consistent and meaningful fake data for your system.

Main Features

  • Provides out of the box data generation from any JSON schema 📦
  • Extendable custom data providers using any lambda functions 🔗
  • Multi level state for dependant data (eg multiple objects sharing value, such as children with same surname) 🤓
  • Inbuilt validation of fake JSON produced
  • In memory conversion from JSON Schema to Pydantic Models with generated examples 🤯
  • Seamless integration with FastAPI 🚀

Installation

$ pip install jsf

---> 100%

Usage

Basic 😊

from jsf import JSF

faker = JSF(
    {
        "type": "object",
        "properties": {
            "name": {"type": "string", "$provider": "faker.name"},
            "email": {"type": "string", "$provider": "faker.email"},
        },
        "required": ["name", "email"],
    }
)

fake_json = faker.generate()

Results in ...

{
    'name': 'Jesse Phillips', 
    'email': '[email protected]'
}

From JSON file 📁

from jsf import JSF

faker = JSF.from_json("demo-schema.json")
fake_json = faker.generate()
Or run stright from the commandline...

Native install

jsf --schema src/tests/data/custom.json --instance wow.json

Docker

docker run -v $PWD:/data challisa/jsf jsf --schema /data/custom.json --instance /data/example.json

FastAPI Integration 🚀

Create a file main.py with:

from jsf import JSF
from fastapi import FastAPI

app = FastAPI(docs_url="/")
generator = JSF.from_json("custom.json")


@app.get("/generate", response_model=generator.pydantic())
def read_root():
    return generator.generate()

Run the server with:

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [28720]
INFO:     Started server process [28722]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

Navigate to http://127.0.0.1:8000 and check out your endpoint. Notice the following are all automatically created:

  • Schema with descriptions and examples
  • Example response
  • Data generation by clicking "try it out"

Example Swagger UI - Page 1 Example Swagger UI - Page 2 Example Swagger UI - Page 3 Example Swagger UI - Page 4

Credits

  • This repository is a Python port of json-schema-faker with some minor differences in implementation.

License

Comments
  • recursion.json test not available

    recursion.json test not available

    Hi @ghandic

    I see a recursion.json in src/tests/data, but I do not see a test for it. Is it supported by jsf? Also, is $ref:"#" supported?

    Thanks.

    opened by ayushbindlish 6
  • Use random type when field is nullable

    Use random type when field is nullable

    In the following line:

    https://github.com/ghandic/jsf/blob/3db751990962176f0659b713a1413cfba34c230a/src/jsf/parser.py#L78

    A TypeError is raised when the item type represents more than one type (excluding null). I'm not sure why.

    Can this method just return a random type from the list (including null)?

    So:

    import random
    
    ...
    
    def __is_field_nullable(self, schema: Dict[str, Any]) -> Tuple[str, bool]:
        item_type = schema.get("type")
        if isinstance(item_type, list):
            if "null" in item_type:
                return random.choice(item_type), True
        return item_type, False
    
    opened by andrewshawcare 5
  • Fix for issue #19 (as discussed) and added generate_xml method

    Fix for issue #19 (as discussed) and added generate_xml method

    • Fix for Issue: https://github.com/ghandic/jsf/issues/19
    • renamed generate_and_validate method
    • updated generate method with bool flag to validate
    • added generate_xml method
    • added tests for the above
    opened by ayushbindlish 5
  • can jsf work with schema no provider?

    can jsf work with schema no provider?

    Schema I Used

    {
        "title": "AlertSync",
        "description": "\u5ba1\u8ba1\u544a\u8b66model",
        "type": "object",
        "properties": {
            "audit_label": {
                "title": "Audit Label",
                "type": "string",
                "format": "ipv4"
            },
            "category": {
                "title": "Category",
                "minimum": 1,
                "maximum": 15,
                "type": "integer"
            },
            "level": {
                "title": "Level",
                "minimum": 0,
                "maximum": 3,
                "type": "integer"
            },
            "src_mac": {
                "title": "Src Mac",
                "default": "00:00:00:00:00:00",
                "pattern": "^([0-9A-F]{2})(\\:[0-9A-F]{2}){5}$",
                "type": "string"
            },
            "src_ip": {
                "title": "Src Ip",
                "type": "string",
                "format": "ipv4"
            },
            "src_port": {
                "title": "Src Port",
                "minimum": 1,
                "maximum": 65535,
                "type": "integer"
            },
            "dst_mac": {
                "title": "Dst Mac",
                "default": "FF:FF:FF:FF:FF:FF",
                "pattern": "^([0-9A-F]{2})(\\:[0-9A-F]{2}){5}$",
                "type": "string"
            },
            "dst_ip": {
                "title": "Dst Ip",
                "type": "string",
                "format": "ipv4"
            },
            "dst_port": {
                "title": "Dst Port",
                "minimum": 1,
                "maximum": 65535,
                "type": "integer"
            },
            "l4_protocol": {
                "$ref": "#/definitions/L4ProtocolEnum"
            },
            "protocol": {
                "$ref": "#/definitions/ProtocolEnum"
            },
            "illegal_ip": {
                "title": "Illegal Ip",
                "default": [],
                "type": "array",
                "items": {
                    "type": "string",
                    "format": "ipv4"
                }
            },
            "last_at": {
                "title": "Last At",
                "default": "2022-12-30T14:08:30.753677",
                "type": "string",
                "format": "date-time"
            },
            "count": {
                "title": "Count",
                "default": 1,
                "minimum": 1,
                "maximum": 100000,
                "type": "integer"
            },
            "other_info": {
                "title": "Other Info",
                "type": "object"
            },
            "payload": {
                "title": "Payload",
                "pattern": "^([0-9A-F]{2})+$",
                "type": "string"
            }
        },
        "required": [
            "audit_label",
            "category",
            "level",
            "l4_protocol",
            "protocol"
        ],
        "definitions": {
            "L4ProtocolEnum": {
                "title": "L4ProtocolEnum",
                "description": "An enumeration.",
                "enum": [
                    "TCP",
                    "UDP"
                ],
                "type": "string"
            },
            "ProtocolEnum": {
                "title": "ProtocolEnum",
                "description": "An enumeration.",
                "enum": [
                    "S7COMM",
                    "MODBUS"
                ],
                "type": "string"
            }
        }
    }
    

    error message

    Traceback (most recent call last):
      File "/root/repos/sa-data-perf/venv/lib/python3.10/site-packages/jsf/schema_types/object.py", line 40, in generate
        return super().generate(context)
      File "/root/repos/sa-data-perf/venv/lib/python3.10/site-packages/jsf/schema_types/base.py", line 49, in generate
        raise ProviderNotSetException()
    jsf.schema_types.base.ProviderNotSetException
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/root/repos/sa-data-perf/venv/lib/python3.10/site-packages/jsf/schema_types/object.py", line 40, in generate
        return super().generate(context)
      File "/root/repos/sa-data-perf/venv/lib/python3.10/site-packages/jsf/schema_types/base.py", line 49, in generate
        raise ProviderNotSetException()
    jsf.schema_types.base.ProviderNotSetException
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/root/repos/sa-data-perf/debug.py", line 14, in <module>
        print(jsf.generate())
      File "/root/repos/sa-data-perf/venv/lib/python3.10/site-packages/jsf/parser.py", line 137, in generate
        return self.root.generate(context=self.context)
      File "/root/repos/sa-data-perf/venv/lib/python3.10/site-packages/jsf/schema_types/object.py", line 42, in generate
        return {o.name: o.generate(context) for o in self.properties if self.should_keep(o.name)}
      File "/root/repos/sa-data-perf/venv/lib/python3.10/site-packages/jsf/schema_types/object.py", line 42, in <dictcomp>
        return {o.name: o.generate(context) for o in self.properties if self.should_keep(o.name)}
      File "/root/repos/sa-data-perf/venv/lib/python3.10/site-packages/jsf/schema_types/object.py", line 42, in generate
        return {o.name: o.generate(context) for o in self.properties if self.should_keep(o.name)}
    TypeError: 'NoneType' object is not iterable
    

    My question

    can jsf work with schema like given, this schema was generated by pydantic, i'm not sure which part cause this error, hope log more specifically to tell me which property cause this error

    opened by zzsuki 3
  • Make

    Make "definitions" variable in JSF._parse method

    The latest JSON Schema draft versions recommend using $defs instead of definitions with the note that the actual reference pointer should be extracted from the $ref fragment. I think it will require a change in the _parse method of https://github.com/ghandic/jsf/blob/main/src/jsf/parser.py

    opened by jtyoung84 3
  • support for string duration format

    support for string duration format

    simply generate fixed length string {10} that contains 0-9 digits https://json-schema.org/understanding-json-schema/reference/string.html#dates-and-times

    opened by khelnagar 3
  • Enums always coerced to strings

    Enums always coerced to strings

    The current enum implementation results in generated int and float data being coerced to str due to how Pydantic handles Union (see these docs). Pydantic will coerce the input to the first type it can match in the Union, which in the current implementation of JSFEnum is always a string for integers and floats.

    class JSFEnum(BaseSchema):
        enum: Optional[List[Union[str, int, float, None]]] = []
    

    Pydantic offers the following recommendation to solve this issue:

    As such, it is recommended that, when defining Union annotations, the most specific type is included first and followed by less specific types.

    However, it also issues a warning concerning Unions inside of List or Dict types:

    typing.Union also ignores order when defined, so Union[int, float] == Union[float, int] which can lead to unexpected behaviour when combined with matching based on the Union type order inside other type definitions, such as List and Dict types (because python treats these definitions as singletons). For example, Dict[str, Union[int, float]] == Dict[str, Union[float, int]] with the order based on the first time it was defined. Please note that this can also be affected by third party libraries and their internal type definitions and the import orders.

    Because of this I think the best solution is to use Pydantic's Smart Union which will check the entire Union for the best type match before attempting to coerce.

    opened by leobaldock 2
  • generate_and_validate method does not return any json object

    generate_and_validate method does not return any json object

    Hi @ghandic

    generate_and_validate() method does not return any json object. If that is how it is meant to be, maybe I can rename it to "validate()" and generate a pull request.

    opened by ayushbindlish 2
  • patternProperties not working

    patternProperties not working

    Hi,

    I am having issues with JSF when patternProperties was defined. See below:

    JSON Schema:

    {
        "title": "XXXXX",
        "description": "XXXXX",
        "type": "object",
    
        "definitions": {
            "InstructionItem": {
                "type": "object",
                "properties": {
                    "Command": {
                        "description": "XXXX",
                        "type": "string"
                    },
                    "ExecutionTimeout": {
                        "description": "XXXX",
                        "type": "integer"
                    },
                    "ExecutionType": {
                        "description": "XXXXX",
                        "type": "string"
                    },
                    "InvokeSequence": {
                        "description": "XXXXXX",
                        "type": "integer"
                    },
                    "MachineLabel": {
                        "description": "XXXX",
                        "type": "string"
                    },
                    "NodeReference": {
                        "description": "XXXXX",
                        "type": "string"
                    }
                },
                "required": [
                    "Command",
                    "ExecutionTimeout",
                    "ExecutionType",
                    "InvokeSequence",
                    "MachineLabel",
                    "NodeReference"
                ]
            },
            "InstructionStep": {
                "type": "object",
                "properties": {
                    "CertificateURL": {
                        "description": "XXXX",
                        "type": "string"
                    },
                    "Description": {
                        "description": "XXXX",
                        "type": "string"
                    },
                    "ManualStep": {
                        "description": "XXXX",
                        "type": "boolean"
                    },
                    "RunAsUser": {
                        "description": "XXXX",
                        "type": "string"
                    },
                    "StepCommand": {
                        "description": "XXXX",
                        "type": "string"
                    },
                    "StepFunction": {
                        "description": "XXXX",
                        "type": "string"
                    },
                    "UseFunction": {
                        "description": "XXXX",
                        "type": "boolean"
                    },
                    "StepRun": {
                        "description": "XXXX",
                        "type": "string"
                    },
                    "cwd": {
                        "description": "XXXX",
                        "type": "string"
                    }
                },
                "required": [
                    "CertificateURL",
                    "Description",
                    "ManualStep",
                    "RunAsUser",
                    "StepCommand",
                    "StepFunction",
                    "UseFunction",
                    "StepRun",
                    "cwd"
                ]
            }
        },
    
    
        "properties": {
            "AreNotificationsEnabled": {
                "description": "XXXX",
                "type": "boolean"
            },
            "Description": {
                "description": "XXXXX",
                "type": "string"
            },
            "Instructions": {
                "description": "XXXXX",
                "type": "array",
                "items": {
                    "$ref": "#/definitions/InstructionItem"
                }
            },
            "IsActive": {
                "description": "XXXXX",
                "type": "boolean"
            },
            "IsCustomerFacing": {
                "description": "XXXXXX",
                "type": "boolean"
            },
            "IsAdminFacing": {
                "description": "XXXXX",
                "type": "boolean"
            },
            "IsSystem": {
                "description": "XXXXX",
                "type": "boolean"
            },
            "Name": {
                "description": "XXXXXX",
                "type": "string"
            },
            "Nodes":{
                "description": "XXXXX",
                "type": "object",
                "patternProperties": {
                    "[A-Z_]+": {
                        "description": "XXXXX",
                        "type": "object",
                        "properties": {
                            "AdminTask": {
                                "description": "XXXXX",
                                "type": "object",
                                "properties": {
                                    "AdminFun": {
                                        "description": "XXXXX",
                                        "type": "object",
                                        "patternProperties": {
                                            "[A-Z_]+": {
                                                "description": "XXXX",
                                                "type": "object",
                                                "properties": {
                                                    "Instructions": {
                                                        "description": "XX",
                                                        "type": "object",
                                                        "patternProperties": {
                                                            "[A-Z_-]+": {
                                                                "$ref": "#/definitions/InstructionStep"
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "required": [
            "AreNotificationsEnabled",
            "Description",
            "Instructions",
            "IsActive",
            "IsCustomerFacing",
            "IsAdminFacing",
            "IsSystem",
            "Name",
            "Nodes"
        ]
    }
    

    Error message:

    > jsf --schema .\af.schema --instance .\t.json
    Traceback (most recent call last):
      File "%HOME%\jsonvalidator\env\lib\site-packages\jsf\schema_types\object.py", line 40, in generate
        return super().generate(context)
      File "%HOME%\jsonvalidator\env\lib\site-packages\jsf\schema_types\base.py", line 49, in generate
        raise ProviderNotSetException()
    jsf.schema_types.base.ProviderNotSetException
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "%HOME%\jsonvalidator\env\lib\site-packages\jsf\schema_types\object.py", line 40, in generate
        return super().generate(context)
      File "%HOME%\jsonvalidator\env\lib\site-packages\jsf\schema_types\base.py", line 49, in generate
        raise ProviderNotSetException()
    jsf.schema_types.base.ProviderNotSetException
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "C:\python3\lib\runpy.py", line 193, in _run_module_as_main
        "__main__", mod_spec)
      File "C:\python3\lib\runpy.py", line 85, in _run_code
        exec(code, run_globals)
      File "%HOME%\jsonvalidator\env\Scripts\jsf.exe\__main__.py", line 7, in <module>
      File "%HOME%\jsonvalidator\env\lib\site-packages\typer\main.py", line 214, in __call__
        return get_command(self)(*args, **kwargs)
      File "%HOME%\jsonvalidator\env\lib\site-packages\click\core.py", line 1128, in __call__
        return self.main(*args, **kwargs)
      File "%HOME%\jsonvalidator\env\lib\site-packages\click\core.py", line 1053, in main
        rv = self.invoke(ctx)
      File "%HOME%\jsonvalidator\env\lib\site-packages\click\core.py", line 1395, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "%HOME%\jsonvalidator\env\lib\site-packages\click\core.py", line 754, in invoke
        return __callback(*args, **kwargs)
      File "%HOME%\jsonvalidator\env\lib\site-packages\typer\main.py", line 500, in wrapper
        return callback(**use_params)  # type: ignore
      File "%HOME%\jsonvalidator\env\lib\site-packages\jsf\cli.py", line 19, in main
        JSF.from_json(schema).to_json(instance)
      File "%HOME%\jsonvalidator\env\lib\site-packages\jsf\parser.py", line 143, in to_json
        json.dump(self.generate(), f, indent=2)
      File "%HOME%\jsonvalidator\env\lib\site-packages\jsf\parser.py", line 131, in generate
      File "%HOME%\jsonvalidator\env\lib\site-packages\jsf\schema_types\object.py", line 42, in generate
        return {o.name: o.generate(context) for o in self.properties if self.should_keep(o.name)}
      File "%HOME%\jsonvalidator\env\lib\site-packages\jsf\schema_types\object.py", line 42, in <dictcomp>
        return {o.name: o.generate(context) for o in self.properties if self.should_keep(o.name)}
      File "%HOME%\jsonvalidator\env\lib\site-packages\jsf\schema_types\object.py", line 42, in generate
        return {o.name: o.generate(context) for o in self.properties if self.should_keep(o.name)}
    TypeError: 'NoneType' object is not iterable
    

    I've tried replacing patternProperties with properties and it worked.

    Thanks,

    opened by jethrobear 2
  • fix one/anyOf for objects without properties

    fix one/anyOf for objects without properties

    entity of type "object" that includes "oneOf" " or "anyOf" but no "properties" falls through the cracks (see below).

    This PR fixes this.

    Traceback (most recent call last):
      File "jsf/src/jsf/schema_types/object.py", line 40, in generate
        return super().generate(context)
      File "jsf/src/jsf/schema_types/base.py", line 49, in generate
        raise ProviderNotSetException()
    jsf.schema_types.base.ProviderNotSetException
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "jsf/src/jsf/schema_types/object.py", line 40, in generate
        return super().generate(context)
      File "jsf/src/jsf/schema_types/base.py", line 49, in generate
        raise ProviderNotSetException()
    jsf.schema_types.base.ProviderNotSetException
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "jsf/src/jsf/schema_types/object.py", line 40, in generate
        return super().generate(context)
      File "jsf/src/jsf/schema_types/base.py", line 49, in generate
        raise ProviderNotSetException()
    jsf.schema_types.base.ProviderNotSetException
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "mockdatageneration/prototype/test.py", line 19, in <module>
        data = faker.generate()
      File "jsf/src/jsf/parser.py", line 143, in generate
        return self.root.generate(context=self.context)
      File "jsf/src/jsf/schema_types/object.py", line 42, in generate
        return {o.name: o.generate(context) for o in self.properties if self.should_keep(o.name)}
      File "jsf/src/jsf/schema_types/object.py", line 42, in <dictcomp>
        return {o.name: o.generate(context) for o in self.properties if self.should_keep(o.name)}
      File "jsf/src/jsf/schema_types/object.py", line 42, in generate
        return {o.name: o.generate(context) for o in self.properties if self.should_keep(o.name)}
      File "jsf/src/jsf/schema_types/object.py", line 42, in <dictcomp>
        return {o.name: o.generate(context) for o in self.properties if self.should_keep(o.name)}
      File "jsf/src/jsf/schema_types/object.py", line 42, in generate
        return {o.name: o.generate(context) for o in self.properties if self.should_keep(o.name)}
    TypeError: 'NoneType' object is not iterable
    
    opened by fliem 1
  • fix: correctly handle nullable types

    fix: correctly handle nullable types

    Description

    Several data types were handling null values incorrectly. In particular, enums and integers would simply error when presented with a type list containing "null", and strings would produce the string "None". This PR fixes that to correctly produce None values in these cases, and adds tests to cover schemas which include "null" in the type list.

    opened by jenniferplusplus 1
  • Make CLI optional?

    Make CLI optional?

    typer brings along rather a lot of dependencies. Might it be possible to make that dependency optional for using this as a library? One way would be a [cli] extra, or a whole separate package for jsf-cli.

    opened by bollwyvl 0
  • Testing as-installed package downstream

    Testing as-installed package downstream

    Thanks for this package!

    It would be lovely for downstream packagers if the tests:

    • made it through in the sdist on PyPI
      • and still wouldn't get installed
    • used import jsf rather than import ..jsf so that they could test the as-installed package

    I'd be happy to work up a PR that did these things, if that was desirable.

    Motivation: I'm looking to package this for conda-forge:

    • https://github.com/conda-forge/staged-recipes/pull/20888

    The lack of tests aren't a hold-up, but do help us catch metadata creep which is only semi-automated.

    Thanks again!

    opened by bollwyvl 7
Releases(0.5.2)
  • 0.5.2(Jan 2, 2023)

    What's Changed

    • Feature/support duration format by @ghandic in https://github.com/ghandic/jsf/pull/50

    Full Changelog: https://github.com/ghandic/jsf/compare/0.5.1...0.5.2

    Source code(tar.gz)
    Source code(zip)
  • 0.5.1(Jan 2, 2023)

    What's Changed

    • Migrating to pants by @ghandic in https://github.com/ghandic/jsf/pull/45
    • fixing deploy pipe by @ghandic in https://github.com/ghandic/jsf/pull/46
    • Fixing docs pipes by @ghandic in https://github.com/ghandic/jsf/pull/47

    Full Changelog: https://github.com/ghandic/jsf/compare/0.5.0...0.5.1

    Source code(tar.gz)
    Source code(zip)
  • 0.5.0(Dec 31, 2022)

    What's Changed

    • feat: [parser]: Support 'oneOf' keyword by @ccaroon in https://github.com/ghandic/jsf/pull/38
    • feat: [parser]: Support $defs keyword for in-schema definitions by @ccaroon in https://github.com/ghandic/jsf/pull/37
    • Incorrect type returned from falsey 0.0 by @AkhilGNair in https://github.com/ghandic/jsf/pull/36
    • fix [parser]: Set base metadata for AnyOf and OneOf by @ccaroon in https://github.com/ghandic/jsf/pull/39
    • force reading README.md in utf-8 by @bollwyvl in https://github.com/ghandic/jsf/pull/41
    • fix one/anyOf for objects without properties by @fliem in https://github.com/ghandic/jsf/pull/42
    • Adding test case and fix for object with no defined properties by @ghandic in https://github.com/ghandic/jsf/pull/44

    New Contributors

    • @ccaroon made their first contribution in https://github.com/ghandic/jsf/pull/38
    • @AkhilGNair made their first contribution in https://github.com/ghandic/jsf/pull/36
    • @bollwyvl made their first contribution in https://github.com/ghandic/jsf/pull/41
    • @fliem made their first contribution in https://github.com/ghandic/jsf/pull/42

    Full Changelog: https://github.com/ghandic/jsf/compare/0.4.0...0.5.0

    Source code(tar.gz)
    Source code(zip)
  • 0.4.0(Jun 30, 2022)

    • Use random type when field is nullable #30
    • Added support for unique items of dicts #31
    • Added coverage for unique items in array test #32
    • Added support for anyOf definition in json schema #24
    Source code(tar.gz)
    Source code(zip)
  • 0.3.2(May 4, 2021)

  • 0.3.1(May 3, 2021)

  • 0.3.0(May 3, 2021)

Owner
Andy Challis
Tinkerer at heart
Andy Challis
Package to Encode/Decode some common file formats to json

ZnJSON Package to Encode/Decode some common file formats to json Available via pip install znjson In comparison to pickle this allows having readable

ZINC 2 Feb 02, 2022
Easy JSON wrapper modfied to wrok with suggestions

🈷️ Suggester Easy JSON wrapper modfied to wrok with suggestions. This was made for small discord bots, for big bots you should not use this. 📥 Usage

RGBCube 1 Jan 22, 2022
Simple Python Library to convert JSON to XML

json2xml Simple Python Library to convert JSON to XML

Vinit Kumar 79 Nov 11, 2022
API that provides Wordle (ES) solutions in JSON format

Wordle (ES) solutions API that provides Wordle (ES) solutions in JSON format.

Álvaro García Jaén 2 Feb 10, 2022
JSON for Modern C++ Release Scripts

JSON for Modern C++ Release Scripts Preparations Install required tools: make install_requirements. Add required keys to config.json (apparently not c

Niels Lohmann 4 Sep 19, 2022
A Python tool that parses JSON documents using JsonPath

A Python tool that parses JSON documents using JsonPath

8 Dec 18, 2022
A daily updated JSON dataset of all the Open House London venues, events, and metadata

Open House London listings data All of it. Automatically scraped hourly with updates committed to git, autogenerated per-day CSV's, and autogenerated

Jonty Wareing 4 Jan 01, 2022
The ldap2json script allows you to extract the whole LDAP content of a Windows domain into a JSON file.

ldap2json The ldap2json script allows you to extract the whole LDAP content of a Windows domain into a JSON file. Features Authenticate with password

Podalirius 68 Dec 07, 2022
Define your JSON schema as Python dataclasses

Define your JSON schema as Python dataclasses

62 Sep 20, 2022
A fast streaming JSON parser for Python that generates SAX-like events using yajl

json-streamer jsonstreamer provides a SAX-like push parser via the JSONStreamer class and a 'object' parser via the ObjectStreamer class which emits t

Kashif Razzaqui 196 Dec 15, 2022
Random JSON Key:Pair Json Generator

Random JSON Key:Value Pair Generator This simple script take an engish dictionary of words and and makes random key value pairs. The dictionary has ap

Chris Edwards 1 Oct 14, 2021
Make JSON serialization easier

Make JSON serialization easier

4 Jun 30, 2022
A Python application to transfer Zeek ASCII (not JSON) logs to Elastic/OpenSearch.

zeek2es.py This Python application translates Zeek's ASCII TSV logs into ElasticSearch's bulk load JSON format. For JSON logs, see Elastic's File Beat

Corelight, Inc. 28 Dec 22, 2022
An tiny CLI to load data from a JSON File during development.

JSON Server - An tiny CLI to load data from a JSON File during development.

Yuvraj.M 4 Mar 22, 2022
Python script for converting .json to .md files using Mako templates.

Install Just install poetry and update script dependencies Usage Put your settings in settings.py and .json data (optionally, with attachments) in dat

Alexey Borontov 6 Dec 07, 2021
json|dict to python object

Pyonize convert json|dict to python object Setup pip install pyonize Examples from pyonize import pyonize

bilal alpaslan 45 Nov 25, 2022
No more boilerplate to check and build a Python object from JSON.

JSONloader This module is for you if you're tired of writing boilerplate that: builds a straightforward Python object from loaded JSON. checks that yo

3 Feb 05, 2022
Editor for json/standard python data

Editor for json/standard python data

1 Dec 07, 2021
Console to handle object storage using JSON serialization and deserealization.

Console to handle object storage using JSON serialization and deserealization. This is a team project to develop a Python3 console that emulates the AirBnb object management.

Ronald Alexander 3 Dec 03, 2022
A tools to find the path of a specific key in deep nested JSON.

如何快速从深层嵌套 JSON 中找到特定的 Key #公众号 在爬虫开发的过程中,我们经常遇到一些 Ajax 加载的接口会返回 JSON 数据。

kingname 56 Dec 13, 2022