Zum Inhalt springen

Voreinstellungen als JSON lesen und schreiben mit Javascript für Adobe Illustrator 2022

Von Null auf ... Javascript in Illustrator – eine kurze, einfache Einführung, Teil 06, JSON mit Javascript erstellen, lesen und schreiben. Programmier-Helfer, programmer’s helper, programming helper.

(Info:) (<neu>) Im sechsten Artikel »Voreinstellungen als JSON lesen und schreiben mit Javascript für Adobe Illustrator 2022« erfahren Sie in einem Tutorial Von Null auf …, wie Sie Voreinstellungen für ein Javascript in Adobe Illustrator 2022 als JSON-Datei lesen und schreiben können. Dieses Tutorial funktioniert auch mit älteren Versionen von Adobe Illustrator. Die hier beschriebene Vorgehensweise lässt sich leicht auch für Javascripts in Photoshop oder InDesign umsetzen.

Dieser Artikel gehört zur Gruppe der Programmier-Helfer (Programmer’s helper, programming helper).

(Hinweis:) Das Scripting (Programmierung) in Adobe Illustrator und anderen Adobe Apps basiert auf Adobe ExtendScript, eine Abart von ECMAScript 3, kurz ES3, und ist somit ein Dialekt von Javascript. Die Dateiendung eines Adobe ExtendScript ist ».jsx«. Trotzdem spricht man auch bei den Adobe Programmen von Javascripts. Javascripts haben übrigens die Endung ».js«.

(Tipp:) Wenn Sie noch nicht mit Javascript vertraut sind, dann lesen Sie zuerst die Artikel »Illustrator mit Javascript automatisieren«.

Inhaltsverzeichnis

Voreinstellungen lesen und schreiben

Wenn ein Benutzer regelmäßig ein Javascript wie »Save-Incrementally.jsx« nutzt, das mehrere Möglichkeiten anbietet, dann wird er froh sein, wenn er Voreinstellungen speichern kann, statt jedes Mal beim Aufrufen des Javascripts die gleichen Einstellungen eingeben zu müssen.

Diese Benutzerfreundlichkeit können Sie mit JavaScript Object Notation, kurz JSON leicht realisieren.

JSON – was ist das?

Die JavaScript Object Notation (JSON) ist das Datenaustauschformat, dessen großer Vorteil darin liegt, dass die Datei für Menschen lesbar ist und trotzdem in Javascripts schnell und einfach benutzt werden kann.

{ "Name" : "Mustermann",
  "Vorname": "Max",
  "Alter" : 42 }

Die Schreibweisen in einer JSON entsprechen genau der Schreibweisen in einer Javascript-Datei. Dabei bestehen die Daten immer aus einem Paar, das aus dem Variablennamen wie »Name« und dem zugehörigen Wert wie »Mustermann« bestehen. Es stehen die Datentypen String, Number, Boolean, Null, Object und Array zur Verfügung. Somit lassen sich sogar kleine Datenbanken einfach als Textdatei aufbauen.

Der Variablenname vor dem Doppelpunkt steht oft in Anführungszeichen. Der Inhalt der Variable steht in Anführungszeichen, wenn es ein String ist. Ein Komma beendet die Definition, wenn noch eine folgt. Der Zeilenumbruch dient nur der Lesbarkeit und ist nicht zwingend.

JSON werden verwendet um (temporär) Benutzerdaten zu speichern und zu lesen, für die Datenübertragung zwischen verschiedenen Programmen oder komplexe Daten zu vereinfachen.

Der größte Vorteil von JSON ist, dass nach dem Einlesen (parsen) einer JSON-Datei die Variablen und ihre definierten Werte im Programm sofort zur Verfügung stehen und diese sich wie ganz normale Variablen verhalten.

(Achtung:) Kommentarzeilen können Sie in JSON nicht verwenden. Es gibt jedoch den Trick, dass Sie dafür eine String-Variable verwenden, falls dies nötig ist.

{ "Kommentar" : "// Eine Person", 
  "Name" : "Mustermann",
  "Vorname": "Max", 
  "Alter : 42 }

Welche Programmteile braucht das Javascript für JSON?

Ein Javascript, das Voreinstellungen als JSON in Adobe Illustrator 2022 lesen und schreiben kann, braucht folgende Programmteile:

  • Eine Definition von Standardwerten, wenn (noch) keine JSON-Datei vorhanden ist.
  • Funktionen zum Konvertieren der JSON
  • Funktion zum Lesen der JSON-Datei.
  • Funktion zum Schreiben der JSON-Datei.

Definition der JSON mit Standardwerten

Beim ersten Start ist noch keine JSON-Datei vorhanden. Daher müssen die Standardwerte aus dem Javascript selbst kommen. Das Gleiche ist nötig, wenn der Benutzer die JSON-Datei gelöscht hat. Für das kleine obige Beispiel aus den vier Einträgen sieht der Quellcode im Javascript wie folgt aus:

// Init the Javascript Object in a Javascript
var JO = { 
	Kommentar: "// Eine Person", 
	Name: "Mustermann",
	Vorname: "Max",
	Alter: 42
};

Dabei steht das »JO« für Javascript Object. Sie können es jedoch auch anders benennen. Aufgerufen werden die Variablen im weiteren Javascript als JO.Name, JO.Vorname oder JO.Alter.

Funktionen zum Konvertieren der JSON

Wenn Sie nach JSON im Internet suchen, dann stoßen Sie auf große Bibliotheken, die erst geladen werden müssen, damit Befehle zum Umwandeln von Strings in JSON wie JSON.stringify() und JSON in String wie JSON.parse() funktionieren.

(Tipp:) Zum Glück ist das für einfache JSON nicht nötig. Sie können das Umwandeln von und nach JSON mit zwei recht einfachen Funktionen in Ihr Javascript einbauen.

Die erste Funktion »fJsonString« nutzt die Methode .toSource(), die einen String in Quellcode umwandelt.
(Achtung:) In den Adobe Programmen ist das Ergebnis dieser Methode in runde Klammern eingeschlossen, die Sie mit .substring entfernen müssen.

Die zweite Funktion »fJsonParse« wandelt einen Quellcode in einen String um, wobei der Befehl use strict zum Einsatz kommt. Dies soll Fehler im Quellcode verhindern und verlangt exakte Schreibweisen.

function fJsonString(pString) { // Object to String 
	var vString = ""+ (pString.toSource());
	return (vString.substring(1, vString.lastIndexOf(")"))); 
	// tip: return without ( ... ) at start and end
} // end-of-function

function fJsonParse(pObj) { // String to Object 
	// a string like  "{ ort:'bar', nummer:42 }" will become an object
	return Function('"use strict";return (' + pObj + ')')();
} // end-of-function

Funktion zum Schreiben einer JSON-Datei

Die Funktion zum Schreiben einer JSON-Datei auf die Festplatte, hier in den Ordner »Dokumente« durch Folder.myDocuments ist ein ganz normales Javascript. Dabei wird die oben beschriebene Funktion fJsonString(JO); benutzt.

function fWriteJSON(pFileName) { // Write = Save Object in a JSON file 
  var vResult = 0;
  if ( pFileName != null ) {
    var vNewPath = Folder.myDocuments + vSeparator + pFileName;
    var file = File(vNewPath);
    try{
      var vString = fJsonString(JO); // converting JSON
      file.open("w"); file.writeln(vString); file.close();
      vResult = 1;
    }
    catch(e){alert(e);}
  }
  return (vResult);
} // end-of-function

Funktion zum Lesen einer JSON-Datei

Die Funktion zum Lesen einer JSON-Datei von der Festplatte, hier in den Ordner »Dokumente« durch Folder.myDocuments ist ein ganz normales Javascript. Dabei wird die oben beschriebene Funktion fJsonParse(vString); benutzt.

function fReadJSON (pFileName) { // Read JSON file and put it into an object
  var vResult = 0
  if ( pFileName != null ) {
    var vNewPath = Folder.myDocuments + vSeparator + pFileName;
    var file = File(vNewPath);
    var vString = "";
    if (file.exists == true) {
      try{
        file.encoding = 'UTF8'; // set to 'UTF8' 'UTF-8'
        file.open("r"); 
        vString = file.read(); 
        file.close();
        JO = fJsonParse(vString); // converting JSON 
        vResult = 1;
      }
      catch(e){alert(e); }
    }
  }
  return (vResult);
} // end-of-function

Fazit

Damit haben Sie alle nötigen Bestandteile für den Einsatz von JSON zum Lesen und Schreiben von Voreinstellungen kennengelernt. Idealerweise sollten Sie die Vorstellungen dem Benutzer in kleiner Benutzeroberfläche anbieten, die Sie in Javascript (ExtendScript) mit nicht zu großen Aufwand erstellen. Doch mehr dazu in einem späteren Artikel.

ENDE

(Hilfe:) Wenn Sie eine Funktion in (AI:), (PS:), (IC:), (ID:) oder (FM:) benötigen, jedoch nicht selbst programmieren, dann sprechen Sie mich an. Ich übernehme gerne kleine Aufträge: zum Kontaktformular.

Jetzt sind Sie gefragt!

(FAQ:) Klicken Sie auf den Link »Kontakt«, wenn Sie eine Anregung, Ergänzung oder einen Fehler gefunden haben.

(Hinweis:) Klicken Sie auf den Link »Newsletter«, wenn Sie gerne auf dem Laufenden bleiben wollen.

(Hilfe:) Klicken Sie auf den Link »Spende«, wenn Sie die Website mit einer kleinen Zuwendung unterstützen möchten.