当作为JSON返回时,如何强制将对象的属性作为字符串输出

时间:2010-05-20 21:11:27

标签: json orm coldfusion

我在我的数据库中将颜色值存储为HEX,这是通过CF9中的ORM设置进行映射的。当我的颜色值完全是数字(例如000000)时,ColdFusion将它们从我的CFC作为JSON返回时将它们序列化为数字(例如0.0)。有没有办法强制将这些列/属性序列化为字符串?

4 个答案:

答案 0 :(得分:1)

第一个选项

你可以试试这个:

<cfset finalValue = " " & yourValue >

OR

<cfset finalValue = " #yourValue#" >

javaCast不起作用,添加尾随空格不起作用。

http://www.mischefamily.com/nathan/index.cfm/2008/10/22/ColdFire-1295100-and-a-CF-to-JSON-Gotcha

http://www.ghidinelli.com/2008/12/19/tricking-serializejson-to-treat-numbers-as-strings

第二个选项

使用自定义方法而不是serializeJSON,Ben Nadel网站上有一个可以根据您的需求进行调整http://www.bennadel.com/blog/100--CF-JSON-My-Own-ColdFusion-Version-For-AJAX.htm

答案 1 :(得分:1)

如果你不害怕一点java(~100 loc),你可以将你的查询(一个coldfusion.sql.QueryTable - 做一个谷歌搜索)传递给一个java类,让{{3}将它转换为json为你。这非常快,并且使您的数据类型与数据库中的数据类型保持一致。因此,如果你有一个varchar,其值为0,则返回'0'。如果你有一个int,你得到一个int。 Null是空值,空字符串是空字符串(尽管你可以根据需要覆盖它)。完全值得使用java来解决所有这些CF json问题。

答案 2 :(得分:0)

一个hacky快速修复只是在序列化和传输之前用一个尾随的非数字字符来装甲你的值。这很难看,但000000Z不会被CF隐式转换为数字。在使用之前修剪,然后在闲暇时找出一个更纯粹的解决方案来激活CF的积极“乐于助人”。

答案 3 :(得分:0)

如果这些是颜色,请在前面贴一个哈希?

<cfset Value = "##" & Value />