JSON: Unterschied zwischen den Versionen
Codica (Diskussion | Beiträge) |
Codica (Diskussion | Beiträge) |
||
(27 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 3: | Zeile 3: | ||
Siehe auch | Siehe auch | ||
* [[Java-Tipps#JSON]] | * [[Java-Tipps#JSON]] | ||
+ | |||
+ | == Auswertung in der Shell == | ||
+ | |||
+ | === mit Hilfe von jq === | ||
+ | |||
+ | Mit dem Paket <code>jq</code> gibt es ein Tool zur Auswertung von JSON auf der Kommandozeile: | ||
+ | echo '{"error":{"code":"assertuserfailed","info":"Assertion that the user is logged in failed"}}' | jq -r '.error.code' | ||
+ | |||
+ | erzeugt | ||
+ | assertuserfailed | ||
+ | |||
+ | Siehe | ||
+ | * [https://stedolan.github.io/jq/manual/#Basicfilters JQ-Manual] | ||
+ | * https://programminghistorian.org/en/lessons/json-and-jq | ||
+ | |||
+ | === mit Hilfe von Miller (mlr) === | ||
+ | |||
+ | Siehe https://miller.readthedocs.io/en/latest/ | ||
+ | |||
+ | === mit Hilfe von Visidata === | ||
+ | |||
+ | Visidata ist ein Datenviewer mit einer Text-Benutzeroberfläche (TUI) im Terminal. | ||
+ | |||
+ | Siehe | ||
+ | * https://www.visidata.org/ | ||
== Schöne Ausgabe auf Kommandozeile == | == Schöne Ausgabe auf Kommandozeile == | ||
Zeile 16: | Zeile 41: | ||
} | } | ||
} | } | ||
+ | |||
+ | == Änderungen von JSON-Data == | ||
+ | |||
+ | === JSONPatch === | ||
+ | [http://jsonpatch.com/ JsonPatch] ist ein JSON-Datenformat zur Darstellung von Änderungen an einem JSON-Datentyp. | ||
+ | Siehe dazu auch | ||
+ | * https://www.npmjs.com/package/fast-json-patch | ||
+ | * https://github.com/sonnyp/JSON8/tree/main/packages/patch | ||
+ | * https://www.npmjs.com/package/rfc6902 | ||
+ | * https://github.com/cujojs/jiff ([https://www.npmjs.com/package/jiff npm jiff]) | ||
+ | * [https://github.com/Starcounter-Jack/JSON-Patch Javascript-Implementierung von JsonPatch] | ||
+ | * http://jsonpatchjs.com/ | ||
+ | * [https://tools.ietf.org/html/rfc6902 RFC6902] | ||
+ | * https://jsonpatch.com/ | ||
+ | * [https://github.com/streamich/json-joy/tree/master/src/json-patch Json-Patch] als Teil der [https://github.com/streamich/json-joy Json-Joy]-Initiative. | ||
+ | * https://github.com/josdejong/immutable-json-patch | ||
+ | |||
+ | * https://github.com/benjamine/jsondiffpatch | ||
+ | * https://www.npmjs.com/package/deep-diff | ||
+ | |||
+ | |||
+ | Eine rudimentäre Implementierung gibt es auch für [[Postgres]]: | ||
+ | * https://gist.github.com/InfoSec812/b830a9db4c9048552f8c51d7987cc4d0#file-jsonb_patch-sql-L46 | ||
+ | |||
+ | ==== JSONWatch ==== | ||
+ | Mit [https://github.com/dbohdan/jsonwatch JsonWatch] können Änderungen eines JSON-Datentyps auf einer URL regelmäßig überwacht werden. Die Änderungen werden als JSON-Änderungen ausgegeben. | ||
+ | |||
+ | == Abfragen von JSON == | ||
+ | |||
+ | === JSONAPI === | ||
+ | Basierend auf REST-Abfragen wurde die [https://jsonapi.org/ JSONAPI] entwickelt. | ||
+ | |||
+ | === GraphQL === | ||
+ | |||
+ | Abweichend von REST hat Facebook einen Standard für Datenabfragen namens GraphQL entwickelt. Dafür gibt es eine Vielzahl von Adaptern, z.B. | ||
+ | * [https://hasura.io/ Hasura] - ein Open Source Layer, der Abfragen in GraphQL auf eine Postgres-Datenbank übersetzt. | ||
+ | |||
+ | === JSONPath === | ||
+ | |||
+ | * https://restfulapi.net/json-jsonpath/ | ||
+ | * https://www.baeldung.com/guide-to-jayway-jsonpath | ||
+ | * https://github.com/json-path/JsonPath | ||
+ | |||
+ | == Rust und JSON == | ||
+ | |||
+ | Siehe zum Parsen und Schreiben von JSON in [[Rust]]] beispielsweise | ||
+ | * https://github.com/serde-rs/json | ||
+ | * https://docs.rs/json/latest/json/ | ||
== MS Access und JSON == | == MS Access und JSON == |
Aktuelle Version vom 22. Juni 2023, 11:21 Uhr
Allgemeines
Siehe auch
Auswertung in der Shell
mit Hilfe von jq
Mit dem Paket jq
gibt es ein Tool zur Auswertung von JSON auf der Kommandozeile:
echo '{"error":{"code":"assertuserfailed","info":"Assertion that the user is logged in failed"}}' | jq -r '.error.code'
erzeugt
assertuserfailed
Siehe
mit Hilfe von Miller (mlr)
Siehe https://miller.readthedocs.io/en/latest/
mit Hilfe von Visidata
Visidata ist ein Datenviewer mit einer Text-Benutzeroberfläche (TUI) im Terminal.
Siehe
Schöne Ausgabe auf Kommandozeile
Um eine für den Menschen leicht lesbare Ausgabe von JSON zu haben, kann man das mit Python mitgelieferte Skript json.tool
nutzen:
echo '{"error":{"code":"assertuserfailed","info":"Assertion that the user is logged in failed"}}' | python -m json.tool
Ausgabe:
{ "error": { "code": "assertuserfailed", "info": "Assertion that the user is logged in failed" } }
Änderungen von JSON-Data
JSONPatch
JsonPatch ist ein JSON-Datenformat zur Darstellung von Änderungen an einem JSON-Datentyp. Siehe dazu auch
- https://www.npmjs.com/package/fast-json-patch
- https://github.com/sonnyp/JSON8/tree/main/packages/patch
- https://www.npmjs.com/package/rfc6902
- https://github.com/cujojs/jiff (npm jiff)
- Javascript-Implementierung von JsonPatch
- http://jsonpatchjs.com/
- RFC6902
- https://jsonpatch.com/
- Json-Patch als Teil der Json-Joy-Initiative.
- https://github.com/josdejong/immutable-json-patch
Eine rudimentäre Implementierung gibt es auch für Postgres:
JSONWatch
Mit JsonWatch können Änderungen eines JSON-Datentyps auf einer URL regelmäßig überwacht werden. Die Änderungen werden als JSON-Änderungen ausgegeben.
Abfragen von JSON
JSONAPI
Basierend auf REST-Abfragen wurde die JSONAPI entwickelt.
GraphQL
Abweichend von REST hat Facebook einen Standard für Datenabfragen namens GraphQL entwickelt. Dafür gibt es eine Vielzahl von Adaptern, z.B.
- Hasura - ein Open Source Layer, der Abfragen in GraphQL auf eine Postgres-Datenbank übersetzt.
JSONPath
- https://restfulapi.net/json-jsonpath/
- https://www.baeldung.com/guide-to-jayway-jsonpath
- https://github.com/json-path/JsonPath
Rust und JSON
Siehe zum Parsen und Schreiben von JSON in Rust] beispielsweise
MS Access und JSON
Microsoft Access 2010 unterstützt von sich aus keinen JSON-Export.
Es gibt jedoch ein kleines Tool, um ganze Datenbanken aus MS Access nach JSON zu exportieren. Das ist aber kein dynamischer Prozess. Bei Änderung der Datenbank muss die Datenbank auch wieder im Ganzen exportiert werden.