Dies ist ein Follow-up-Frage: Append to JSON array with ColdFusion, taking Null values into consideration?anhängen zu JSON-Array innerhalb eines JSON-Array Coldfusion
diese Frage gestern beantwortet wurde und funktionierte perfekt (Danke Kevin B. und Leigh!). Die Anwendung, aus der ich meine JSON-Daten entwerfe, warf mir heute Morgen einen Kurvenball zu. Manchmal, abhängig von der Daten ich anfordernden bin, gibt es die gesamte JSON als ein Array wie folgt aus:
[
{
"loginHosts": [
"server1.example.com"
],
"sudoHosts": [
"server1.example.com"
],
"CPG": [
"my_group"
],
"mail": "[email protected]",
"loginShell": "/bin/bash"
}
]
Ich weiß nicht, warum die Anwendung dies tut. Wenn ich wüsste, dass dies eine Möglichkeit wäre, hätte ich diese Information meiner vorherigen Frage hinzugefügt, entschuldige mich.
Meine Versuche, eine Lösung zu finden, führen mich hier zuerst: Using JSON Data with Coldfusion. Das Schleifen über das JSON-Array als Sammlung schien zu funktionieren, aber nur, wenn keiner der Array-Werte Null war. Ich dachte, mit diesem Code, wie in der vorherigen Frage, funktionieren würde, wenn ich es für alle JSON Felder verwendet:
<cfif NOT structKeyExists(myStruct, 'sudoHosts') OR NOT isArray(myStruct.sudoHosts)>
<cfset myStruct.sudoHosts = []>
</cfif>
Dies war nicht der Fall. Ich bekomme ständig:
Error: Can't cast Complex Object Type Array to String
durch die Debug-Ausgabe der Suche, hat Lucee dies heraus werfen: string Use Built-In-Function "serialize(Array):String" to create a String from Array
. Ich habe mehr gegraben und diesen Artikel gefunden: Railo tip: store complex data by using serialize(data). Leider haben Nullwerte wieder zugeschlagen. Auch mein Verständnis ist ist ähnlich wie evaluate()
, und nicht zu empfehlen.
Ich werde weiterhin nach einer Lösung suchen, aber jede Hilfe wird, wie immer, sehr geschätzt!
- EDIT -
ich auf diesen Thread kam: ColdFusion JSON object vs array of objects. Ich habe festgestellt, dass der JSON in der Frage ein ARRAY []
ist, und ich habe die Antwort auf meinen Code angewendet, laufe aber immer noch in das Null-Problem. Ich denke, ich weiß nicht, wie man nach verschachtelten Nullwerten sucht. :(
Warum denkst du das: 'Auch mein Verständnis ist serialize() ist ähnlich zu evaluate() und nicht gut zu bedienen.'? –
Evaluate() ist tendenziell langsamer, auch wenn es geringfügig langsamer ist, und serialize() scheint ähnlich wie evaluate() zu arbeiten. Das beste Beispiel, das ich gefunden habe, war hier: http://blog.adamcameron.me/2013/08/evaluulate-is-really-slow-is-it-now.html Nach dem Durchlesen verschiedener anderer Dokumente scheint serialize() das zu haben Gleicher Overhead. Jeder Kilometerstand kann variieren. : D – Grimdari