Search the FirstSpirit Knowledge Base
Hallo,
ist die folgende Beobachtung korrekt? Und wenn ja, gibt es eine Möglichkeit, den Effekt zu unterbinden?
Code in der Seitenvorlage:
$CMS_SET(theMap, {:})$
$CMS_SET(void, theMap.put("id", "17"))$
$CMS_SET(void, theMap.put("words", "9"))$
$CMS_SET(void, theMap.put("content", "The quick brown fox jumps over the lazy dog."))$
$CMS_VALUE(theMap.toJSON)$
Ergebnis:
{
"content": "The quick brown fox jumps over the lazy dog.",
"id": "17",
"words": "9"
}
Offenbar wird beim Aufruf von toJSON die Map nach deren Keys sortiert, was in meinem Fall unerwünscht ist. Gibt es eine Möglichkeit, diese Sortierung zu unterbinden? Die JSON-Ausgabe, die wir benötigen, muss einer vorgegebenen Reihenfolge der Einträge genügen. Insbesondere muss der id-Knoten der erste in der JSON-Ausgabe sein.
Viele Grüße,
Udo Woitek.
Hallo Udo,
aus dem {:} wirst Du nicht einfach einen anderen Typ machen können. Du kannst Dir allerdings selber eine LinkedHashMap bauen:
$CMS_SET(theMap, class("java.util.LinkedHashMap").new)$
$CMS_SET(void, theMap.put("id", "17"))$
$CMS_SET(void, theMap.put("words", "9"))$
$CMS_SET(void, theMap.put("content", "The quick brown fox jumps over the lazy dog."))$
$CMS_VALUE(theMap.toJSON())$
Zum Erzeugen neuer Objekte siehe auch hier (Tipp: trotzdem möglichst sparsam verwenden).
Viele Grüße
Michael
Im Thread Eine mit $CMS_SET()$ erzeugte Map sortiert die Einträge habe ich die Aussage gefunden, eine Map würde die Reihenfolge der Einträge nicht beibehalten. Nun mag das bei einer HashMap der Fall sein, eine LinkedHashMap bewahrt aber auch in Java 8 die Reihenfolge der Einträge. Die Frage ist nun eher, wie man FirstSpirit davon überzeugen kann, aus {:} eine LinkedHashMap zu machen...
Hallo Udo,
aus dem {:} wirst Du nicht einfach einen anderen Typ machen können. Du kannst Dir allerdings selber eine LinkedHashMap bauen:
$CMS_SET(theMap, class("java.util.LinkedHashMap").new)$
$CMS_SET(void, theMap.put("id", "17"))$
$CMS_SET(void, theMap.put("words", "9"))$
$CMS_SET(void, theMap.put("content", "The quick brown fox jumps over the lazy dog."))$
$CMS_VALUE(theMap.toJSON())$
Zum Erzeugen neuer Objekte siehe auch hier (Tipp: trotzdem möglichst sparsam verwenden).
Viele Grüße
Michael