これはフォローアップの質問です: Null 値を考慮して、ColdFusion で JSON 配列に追加しますか?
その質問は昨日回答され、完璧に機能しました (Kevin B. と Leigh に感謝します!)。しかし、今朝、JSON データを取得しているアプリケーションが急変しました。 要求しているデータによっては、JSON 全体を次のような配列として返す場合があります。
[
{
"loginHosts": [
"server1.example.com"
],
"sudoHosts": [
"server1.example.com"
],
"CPG": [
"my_group"
],
"mail": "myuser@example.com",
"loginShell": "/bin/bash"
}
]
そのアプリケーションがこれを行う理由がわかりません。これが可能性であることがわかっていれば、その情報を前の質問に追加したはずです。申し訳ありません。
解決策を見つけようとする私の試みは、最初に私をここに導きました: Coldfusion での JSON データの使用。コレクションとしての JSON 配列のループは機能しているように見えましたが、配列値がどれも Null でない場合のみでした。前の質問のように、このコードを使用すると、すべての JSON フィールドに使用するとうまくいくと思いました。
<cfif NOT structKeyExists(myStruct, 'sudoHosts') OR NOT isArray(myStruct.sudoHosts)>
<cfset myStruct.sudoHosts = []>
</cfif>
そうではありませんでした。私は継続的に得ます:
エラー: 複合オブジェクト型配列を文字列にキャストできません
デバッグ出力を調べると、Lucee はこれをスローしました: string Use Built-In-Function "serialize(Array):String" to create a String from Array
. さらに掘り下げて、次の記事を見つけました: Railo のヒント: serialize(data) を使用して複雑なデータを格納します。悲しいことに、Null 値が再び発生しました。また、私の理解はserialize()
に似てevaluate()
おり、お勧めしません。
解決策を探し続けますが、いつものように、どんな助けも大歓迎です!
- 編集 -
このスレッドに出くわしました: ColdFusion JSON object vs array of objects。質問の JSON が ARRAY であることに気付き、[]
コードに回答を適用しましたが、まだ Null 問題が発生しています。ネストされた Null 値をチェックする方法がわかりません。:(