JSON: Unterschied zwischen den Versionen

Aus CodicaTipps
Zur Navigation springen Zur Suche springen
 
(21 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 5: Zeile 5:
  
 
== Auswertung in der Shell ==
 
== 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:
 
Mit dem Paket <code>jq</code> gibt es ein Tool zur Auswertung von JSON auf der Kommandozeile:
Zeile 14: Zeile 16:
 
Siehe  
 
Siehe  
 
* [https://stedolan.github.io/jq/manual/#Basicfilters JQ-Manual]
 
* [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 29: Zeile 43:
  
 
== Änderungen von JSON-Data ==
 
== Änderungen von JSON-Data ==
 +
 +
=== JSONPatch ===
 
[http://jsonpatch.com/ JsonPatch] ist ein JSON-Datenformat zur Darstellung von Änderungen an einem JSON-Datentyp.
 
[http://jsonpatch.com/ JsonPatch] ist ein JSON-Datenformat zur Darstellung von Änderungen an einem JSON-Datentyp.
 
Siehe dazu auch
 
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]
 
* [https://github.com/Starcounter-Jack/JSON-Patch Javascript-Implementierung von JsonPatch]
 +
* http://jsonpatchjs.com/
 
* [https://tools.ietf.org/html/rfc6902 RFC6902]
 
* [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.
 
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


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

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.