Wie kann ich JSON mit Python in Streaming -Weise gegen ein JSON -Schema validieren, z. B. nicht das gesamte Objekt in ErPython

Python-Programme
Guest
 Wie kann ich JSON mit Python in Streaming -Weise gegen ein JSON -Schema validieren, z. B. nicht das gesamte Objekt in Er

Post by Guest »

Ich habe einen großen JSON, den ich nicht in den Speicher laden möchte. Ich möchte es gegen ein JSON -Schema in einer Streaming -Modus validieren. Alle Bibliotheken, die ich bisher finden konnte, validieren nur vollständig geladene JSON-Objekte (wie Pydantic oder https://github.com/python-jsonschema/jsonschema). Was ich lieber brauche, ist eine Möglichkeit, es zu validieren, um den ursprünglichen JSON -Chunk mit dem Chunk zu füttern, d. H. Die Größe des Puffer />

Code: Select all

import pydantic  # I use V2
import ijson
import pathlib

class A(pydantic.BaseModel):
i: int
a: list[int]
s: str

jsonpath = pathlib.Path("some.json")
validator = MyValidator(schema=A.model_json_schema())
with jsonpath.open("rb") as file:
for prefix, event, value in ijson.parse(file, use_float=True):
validator.event((prefix, event, value))

print(validator.errors)
Stellen Sie sich vor. Json Die Datei ist ~ 50 MB groß a Instanz mit einem sehr langen Array. Ich möchte das gesamte Objekt nicht in den Speicher laden (das würde Pydantic tun), aber ich möchte sicherstellen, dass einige.json das Schema eines entsprechen. Der Validator.Erors < /code> könnte mir eine Liste von Fehlern geben, die in Fällen leer sein wird, in denen keine Entdeckung entdeckt wird. Der Begriff "Streaming -Mode" bedeutet, dass das Ereignis genau einmal gesehen wird und es keine Möglichkeit gibt, es wieder zu sehen. Ich bin jedoch bereit, eine Antwort zu akzeptieren, wenn es eine Möglichkeit gibt, die Validierung mit mehreren Scans durchzuführen, d. H. In meinem Beispiel oben sind mehrere Datei -Scans in Ordnung mit mir.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post