- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
toJSON mit geschachteltem Array
Hallo zusammen,
ich habe folgende Anweisung (eingebettet in einem Aufbau fรผr ein JSON mittels toJSON am Ende bei der Ausgabe, FS 5.2):
--$$CMS_SET(external_references_array, [])$$--
--$$CMS_IF(tt_use_external_reference)$$--
--$$CMS_FOR(tt_external_reference_list_entry, tt_external_reference_list)$$--
--$$CMS_SET(external_references_entry_array, [])$$--
--$$CMS_SET(void, external_references_entry_array.add(tt_external_reference_list_entry.tt_channel_config_key))$$--
--$$CMS_SET(void, external_references_entry_array.add(tt_external_reference_list_entry.tt_channel_config_value))$$--
--$$CMS_SET(void, external_references_array.add(external_references_entry_array))$$--
--$$CMS_END_FOR$$--
--$$CMS_END_IF$$--
--$$CMS_SET(void, channel_json.put("externalReferences", external_references_array))$$--
Ich erwarte eine Ausgabe in Form von
[
[
"channelConfig1",
"/external/channel1.json"
],
[
"channelConfig2",
"/external/odds_communication/channel2.png"
],
]
bekomme aber
[
[
"channelConfig1",
"/external/channel1.json",
"channelConfig2",
"/external/odds_communication/channel2.png"
],
]
Habe ich einen Denkfehler in den Zuweisungen, oder kann toJSON das nicht handeln?
Viele Grรผรe,
Bianca
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Bianca,
es gibt mehrere Dinge, die hier zuschlagen. Bevor ich auf die konkrete Lรถsung eingehe, mรถchte ich einen Vorschlag machen: Deine innere Liste sieht fรผr mich so aus, als wรผrde sie Dinge mit verschiedener Bedeutung enthalten. In diesen Fรคllen bietet es sich meist an, stattdessen eine Map/Json-Object zu verwenden und die verschiedenen Elemente zu benennen. Wenn du das tust, lรถst sich das Problem gleich von selbst auf und du erhรคlst in etwa eine solche Ausgabe:
[
{
"key": "channelConfig1",
"value": "/external/channel1.json"
},
{
"key": "channelConfig2",
"value": "/external/odds_communication/channel2.png"
},
]
Die "Lรถsung" fรผr dein Problem ist eine etwas verรคnderte API beim Listenzugriff bei Verwendeung der BeanShell (die ja in FirstSpirit verwendet wird). Es existiert eine รberladung, die "add" fรผr Listen auf das "addAll" umbiegt. Ein Quickfix, der die Listensortierung (temporรคr) umdreht, wรคre
--$$CMS_SET(void, external_references_array.add(0, external_references_entry_array))$$--
In Kombination mit einmal Liste umdrehen
--$$CMS_SET(void, class("java.util.Collections").reverse(external_references_array))$$--
--$$CMS_SET(void, channel_json.put("externalReferences", external_references_array))$$--
Ich denke, dass der erste Ansatz empfehlenswert wรคre. Perfekt ist der zweite auch nicht - aber er funktioniert. Wie man auf die รberladung der BeanShell verzichten kann, weiร ich an dieser Stelle leider auch nicht.
Viele Grรผรe,
Lena
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Bianca,
es gibt mehrere Dinge, die hier zuschlagen. Bevor ich auf die konkrete Lรถsung eingehe, mรถchte ich einen Vorschlag machen: Deine innere Liste sieht fรผr mich so aus, als wรผrde sie Dinge mit verschiedener Bedeutung enthalten. In diesen Fรคllen bietet es sich meist an, stattdessen eine Map/Json-Object zu verwenden und die verschiedenen Elemente zu benennen. Wenn du das tust, lรถst sich das Problem gleich von selbst auf und du erhรคlst in etwa eine solche Ausgabe:
[
{
"key": "channelConfig1",
"value": "/external/channel1.json"
},
{
"key": "channelConfig2",
"value": "/external/odds_communication/channel2.png"
},
]
Die "Lรถsung" fรผr dein Problem ist eine etwas verรคnderte API beim Listenzugriff bei Verwendeung der BeanShell (die ja in FirstSpirit verwendet wird). Es existiert eine รberladung, die "add" fรผr Listen auf das "addAll" umbiegt. Ein Quickfix, der die Listensortierung (temporรคr) umdreht, wรคre
--$$CMS_SET(void, external_references_array.add(0, external_references_entry_array))$$--
In Kombination mit einmal Liste umdrehen
--$$CMS_SET(void, class("java.util.Collections").reverse(external_references_array))$$--
--$$CMS_SET(void, channel_json.put("externalReferences", external_references_array))$$--
Ich denke, dass der erste Ansatz empfehlenswert wรคre. Perfekt ist der zweite auch nicht - aber er funktioniert. Wie man auf die รberladung der BeanShell verzichten kann, weiร ich an dieser Stelle leider auch nicht.
Viele Grรผรe,
Lena
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Lena,
vielen Dank fรผr Deine Antwort. Ich hatte die Schnittstelle so bekommen und versucht mich anzupassen. Wir haben tatsรคchlich die Schnittstelle nochmal geรคndert, dass es fรผr uns passte und auch mit FS hinhaut - soweit wir das umsetzen konnten.
Viele Grรผรe,
Bianca
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
wie sieht denn eure jetzige Lรถsung aus?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo,
wie schon oben ewรคhnt, hatte sich die Schnittstelle nochmals geรคndert und so konnte ich das JSON ganz "normal" bauen.
In einem anderem Template haben wir aber tasรคchlich das Umdrehen der Liste nutzen mรผssen, wie Lena es erwรคhnte.
LG Bianca

