JSON im Konfigurationsformular anzeigen

Ich möchte gerne in der Testumgebung ein JSON String einblenden. Da ja das Konfigurationsformular selber schon JSON ist weis ich nicht so recht wie das funktioniert. Geht das und wenn ja wie?

Jag den String doch einfach mal in einem IPS-Script durch json_encode…das siehst du doch wie er maskiert aussieht.
Michael

Das Problem ist ich würde gerne den String so darstellen wie er abgetippt werden soll ansonsten ist das wieder nur verwirrend.
Also

{"value1":"value1","value2":"value2"}

zum abschreiben in der Testumgebung.
Wenn ich das so eingebe geht es logischerweise gar nicht.

Die geschweiften Klammer bekomme ich gar nicht dargestellt die sind wohl JSON vorbehalten.
Die " kann ich escapen


$form = '{ "type": "Label", "label": "         values               '\"value1\":\"value1\"" },';

Sieht dann aber im Formular leider so aus

\"value1\":\"value1\"

Das birgt dann wieder die Gefahr das die \ mit abgeschrieben werden.

Magst du noch mal ausholen? :slight_smile: Ich habe nicht ganz das Problem verstanden. Wenn du JSON einfach als String (z.B. per json_encode) ins Formular packst, wird es doch in einer ValidationTextBox sauber angezeigt!? Falls nicht könnte das ein Fehler sein.

paresy

Zugegebenermaßen ist das etwas außergewöhnlich und ich habe das wohl nicht ganz richtig erklärt.
Ich habe ein PHP Modul das Daten von einem Dienst entgegennimmt. Wie die Daten an IP-Symcon geschickt werden sollen ist im Dienst zu hinterlegen und ist individuell einzustellen. Wenn ich das Modul jetzt öffentlich mache sollte dem Nutzer der Moduls eine Hilfestellung erhalten wie der Dienstes zu konfigurieren ist, damit IP-Symcon die Daten erhält. Die Daten werden an IP_Symcon als JSON übergeben, ich möchte also darstellen wie dieser JSON String aussieht damit dieser abgeschrieben werden kann. Ich nutze GetConfigurationForm() um das Konfigurationsformular individuell zu erstellen. Das funktioniert soweit auch gut. Was ich jetzt möchte ist in der Testumgebung eine Zeile einblenden, die individuell aus den Eingaben im Modul generiert wird und den String angibt, den der Nutzer abschreiben kann.

Und hier ist jetzt mein Problem ich weis nicht ob es überhaupt möglich ist einen JSON String in der Testumgebung darzustellen.

Ich habe mir jetzt mal so beholfen


{ "type": "Label", "label": "         \'\'value1\'\':\'\'value1\'\'" },	

Sieht dann in der Testumgebung so aus
zap22.png
Abgesehen davon das man das letzte ’ nicht lesen kann, was ich aber schon in einem anderen Thread geschildert hatte, das ein Teil des letzen Zeichen immer abgeschnitten wird, kann man ja dies als
„value1“:„value1“
lesen.

Jetzt würde ich aber gerne den gesamten String generieren und in der Testumgebung ausgeben.
Wenn ich jetzt aber ein \ { einbaue lädt das GetConfigurationForm nicht mehr weil dann das JSON das der Darstellung des Forms dient einen Fehler enthält.
Ich hatte dann überlegt ob man den String vielleicht in ein Textfeld legen kann bin da aber auch daran gescheitert.

Gibt es denn irgendeine Möglichkeit den JSON String so wie er wirklich aussieht in der Testumgebung darzustellen oder geht dies einfach nicht da das Form ja selber JSON ist?

Geht problemlos:


    class DynamicConfigurationForm extends IPSModule
    {
        
        public function GetConfigurationForm()
        {
            
            return json_encode(Array(
                        "actions" => Array(
                            Array(
                                "type" => "Label",
                                "label" => json_encode(Array("value1" => "value2"))
                            )
                        )
                    ));
            
        
        }
        
    
    }

json_encode kümmert sich alleine um das saubere escaping :slight_smile:

paresy

Danke Dir, durch das Skript konnte ich den Fehler in der Funktion die die Ausgabe aufbaut finden jetzt wird es auch dargestellt.:slight_smile: