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...">

当我看到萤火虫控制台出现这种情况时,我感到很惊讶:

{"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 回答