4

キーの大文字と小文字を保持するために使用される構造体でキーを作成するための配列表記の使用。

<cfset var response = structNew()>
<cfset response[ "error" ] = 0>
<cfset response[ "message" ] = "">
<!--- this worked when converting this struct to a JSON

したがって、実際に構造体にデータを入れると、次のようになります。

<cfset response.error = 1>
<cfset response.message = "There was an error inserting the record...">

これがfirebugコンソールに出くわしたのを見て驚いた:

{"MESSAGE":"There was an error inserting the record...","ERROR":1}

注意してください、情報は私が見ることを期待していたものです。

<cfset response.error = 0>JSONに変換するときに保存されないケースのために、を使用したかどうかはわかりますが、これは過去に私にとってはうまくいきました。CF10で何か間違ったことをしているのでしょうか、それとも何か変更を加えているのでしょうか。

編集:

すべての回答が返ってくる前に、みんなの言うことを試してみました。

<cfset response["error"] = 1>
<cfset response["message"] = "There was an error inserting the record...">

そしてそれはうまくいった。だから、serializeJSONCF10での動作が変わったと思います。

知っておくと良い。

4

2 に答える 2

3

角かっこ表記を使い続ければ、問題なく機能し続けると思います。もう少しタイピングすると思いますが、うまくいくはずです。これがCF9からの変更である場合は、バグレポートを提出することをお勧めします。

于 2012-08-31T15:01:47.057 に答える
3

ドット表記ではなく角かっこ表記で構造体キーを引き続き参照する場合は、を使用するときに大文字と小文字を区別する必要はありませんserializeJSON()

ただし、CF9でテストした後は、角かっこ表記とドット表記のどちらを使用しても問題なく動作するようです。これはCF9と10の違いである可能性があり、Rayが推奨するように、バグレポートを提出することをお勧めします。

CF9で行ったことは次のとおりです。

<cfset response = structNew()>
<cfset response[ "error" ] = 0>
<cfset response[ "message" ] = "">
<!--- this worked when converting this struct to a JSON --->

<cfoutput>#serializeJSON(response)#</cfoutput><br /><br />

<!--- This outputs {"message":"","error":0} --->

<cfset response.error = 1>
<cfset response.message = "There was an error inserting the record...">

<cfoutput>#serializeJSON(response)#</cfoutput>
<!--- This outputs {"message":"There was an error inserting the record...","error":1} --->
于 2012-08-31T15:03:08.307 に答える