【问题标题】:preserving case for coldfusion structs when converted to JSON转换为 JSON 时为冷融合结构保留大小写
【发布时间】:2012-08-31 14:44:07
【问题描述】:

使用数组表示法在用于保留键大小写的结构中创建键。

<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}

注意,这些信息是我希望看到的。

我知道我是否会使用&lt;cfset response.error = 0&gt;,以便在将其转换为 JSON 时不会保留这种情况,但这在过去对我有用。我是在做错什么我看不到的事情还是在 CF10 中做了什么改变?

编辑:

在所有回复都回来之前,我尝试了大家所说的。

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

它奏效了。所以,我猜他们改变了serializeJSON 在 CF10 中的工作方式。

很高兴知道。

【问题讨论】:

标签: coldfusion


【解决方案1】:

如果您继续使用括号表示法而不是点表示法来引用结构键,则使用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} --->

【讨论】:

  • 是的,这是 CF9 中的预期行为。一旦我将其全部切换为数组表示法,它就可以正常工作。我会提交一份错误报告。
  • @RobM - 看看 Ray 在下面对他的回答的评论。他说它在 CF10 中对他来说效果很好。我注意到的唯一主要区别是他使用{} 来初始化结构,而您使用structNew()。我怀疑这可能导致它,但你永远不知道......
  • 对我不起作用..&lt;cfset var response = {}&gt; {"MESSAGE":"There was an error inserting the record...","ERROR":1}
  • @RobM 我终于开始在 CF10 上进行测试,上面列出的代码与 CF9 中的工作方式相同。我不确定您的设置发生了什么。 :)
  • 其他人似乎都能让它按预期工作,但无论出于何种原因,它都不适合我。我不确定问题是什么或设置有什么不同。我将在整个过程中使用括号表示法。
【解决方案2】:

我相信如果您继续使用括号表示法,它将继续正常工作。我猜要多打字,但应该可以。如果这是对 CF9 的更改,但您可能需要提交错误报告。

【讨论】:

  • 作为一个仅供参考,我在 CF10 中对此进行了测试,它工作正常 - 保持这种情况:(哎呀,忘记 Enter 提交):#serializejson(s)#
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-24
  • 2011-07-02
  • 2020-04-28
  • 2014-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多