使用数组表示法在用于保留键大小写的结构中创建键。
<cfset var response = structNew()>
<cfset response[ "error" ] = 0>
<cfset response[ "message" ] = "">
<!--- this worked when converting this struct to a JSON
Run Code Online (Sandbox Code Playgroud)
所以当我实际将一些数据放入结构中时:
<cfset response.error = 1>
<cfset response.message = "There was an error inserting the record...">
Run Code Online (Sandbox Code Playgroud)
当我在 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...">
Run Code Online (Sandbox Code Playgroud)
它起作用了。所以,我猜他们改变了serializeJSONCF10 的工作方式。
很高兴知道。
如果您继续使用方括号表示法而不是点表示法引用结构键,则在使用 时应该不会出现大小写问题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} --->
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2112 次 |
| 最近记录: |