Daten in JSON anlegen - Struktur korrekt?

  • Ich möchte die Fehlerkataloge verschiedener Geräte in eine JSON-Datei überführen und damit eine Software füttern, mit der auch unsere Innendienstmitarbeiter telefonisch eine erste Diagnostik vornehmen können.

    Meine Idee ist, dass der User den Fehlercode eingibt, Geräte die diesen Code verwenden angezeigt bekommt und dann für die weiteren Informationen das korrekte Gerät auswählt (bzw. dies im Dialog mit dem Kunden tut - das für den Fall, dass gerade kein Zugriff auf die Kundendaten möglich ist - z.B. tel. Notdienst).

    Hier mal zwei fiktive Codes, die aber z.T. unterschiedliche Bedeutung haben können (je nach Gerät):

    In JSON würde ich das jetzt so anlegen:

    Ist das in der Form korrekt?

  • Da sind noch ein paar syntaktische Probleme drin.

    1. "error list": hinter diesem Key steht ein Array mit nur einem einzigen Wert - nämlich ein Object (Dictionary). Ist das so beabsichtigt? Also kommen da noch mehr Objekte in das Array oder war eher gemeint, dass gleich das Object als Wert dem Key "error list" zugeordnet werden soll?

    2. Dieses Object mit den Error-Codes. Du hast hier ein Object deren Keys mehrmals verwendet werden (der Key "code"). Das ist streng genommen gar nicht mal verboten in JSON aber könnte spätestens dann bei den Implementierungen problematisch werden. Z.B. in AutoIt: Dort wird man ein Object naheliegenderweise als Dictionary oder Map abbilden. Dort wiederrum sind nur unique-Keys erlaubt und du bekommst ein Problem mit deiner JSON.

    3. Der Eintrag "code": 108 [ Das geht so nicht. Im Grunde sagt es erstmal aus, dass im Object unter dem Key "code" der Integerwert 108 steht. Direkt darauf folgt aber gleich eine Array-Definition. Was soll also eine Abfrage nach Code bringen? - den Wert 108 oder das Array? Nur eines von beiden geht.

    4. Die Datentypen der Einträge wechseln. Mal ist. z.B. reason und disposal ein Array, mal ein String. Das geht natürlich aber es führt zu einer nötigen Fallunterscheidung im Auswerteprogramm. Wenn man z.B. hierfür immer ein Array nimmt - egal ob nur 1 Eintrag oder 100, dann reicht trotzdem ein und der selbe Code hierfür.


    Ich rate daher einfach mal und schlage folgenden Aufbau vor:

  • Es kommt zwar drauf an, wie viele Geräte du generell verwerwaltest,... Aber ich würde in Erwägung ziehen, die Infos nach Gerät zu speichern und dann ggf. alle durchiterieren, um die Geräte zu finden, die die Fehlermeldung haben.

    Selbst wenn du 10000 Geräte hast dürfte das durchlaufen nicht lange dauern.

    Wenn du aber beim Gerät hinzufügen/ändern, alle Stellen zum hinzufügen/entfernen der Infos suchen musst, dürfte das länger dauern. Insbesondere, wenn sich bei nem Gerät durch nen update,... die Fehlermeldung ändert, weil du dann ja nicht nur die aktuellen Infos brauchst, sondern auch die vorherigen, um zu sehen, bei welcher Fehlermeldung du das Gerät rausnehmen musst,...

    Also, wenn du diese JSON-Daten nicht aus anderen generierst, sondern manuell pflegen willst, würde ich überlegen, die Struktur anders zu gestalten.

    Besser den PC 1-2 Sekunden alle Objekte durchsuchen lassen, als selber Stunden zu verbringen, Daten anzupassen :D

    Wenn Geschwindigkeit trotzdem zu langsam ist, würd ich immernoch die Geräte als JSON ablegen und dann das nach Fehlercode sortierte JSON daraus generieren.

    Aber ob das in deiner Anwendung notwendig/sinnvoll ist wirst du vmtl. besser wissen :)

  • Es kommt zwar drauf an, wie viele Geräte du generell verwerwaltest,... Aber ich würde in Erwägung ziehen, die Infos nach Gerät zu speichern und dann ggf. alle durchiterieren, um die Geräte zu finden, die die Fehlermeldung haben.

    Selbst wenn du 10000 Geräte hast dürfte das durchlaufen nicht lange dauern.

    Der Hinweis ist grundsätzlich richtig. Ich hatte aber nicht erwähnt, dass es hier nur um Gerätetypen allgemein geht. Also nicht für jedes (mit Seriennnummer identifizierbare) Gerät werden Fehlercodes gespeichert, sondern nur über den Artikel als solchen. Und diese Anzahl ist bei uns überschaubar, so etwa 50-60 Artikel sind betroffen. Die Anzahl der relevanten Fehler ist bei etwa 30 - 40 pro Gerätetyp.

    Ausschnitt JSON

    Ich habe bei einigen Fehlercodes 2 max. 3 unterschiedliche Bedeutungen. Somit ist der Aufwand (s. Bsp.) auf 2 oder 3 Einträge begrenzt.

    Eine Speicherung mit PrimärKey=Gerätetyp würde für jeden Eintrag aus dem Array "device" einen Eintrag erfordern mit allen anderen Angaben. Der obige Eintrag wäre dann doppelt so umfangreich und voll unnötiger Redundanzen.

    Meiner Meinung nach ist die bisherige Variante für meinen Anwendungsfall passend.

    Trotzdem Danke für die Investition deines Gehirnschmalzes. 8o