Javascript 如何在JSON或Coldfusion中处理JSON结果中的“00”

Javascript 如何在JSON或Coldfusion中处理JSON结果中的“00”,javascript,jquery,ajax,json,coldfusion-10,Javascript,Jquery,Ajax,Json,Coldfusion 10,我不知道该怎么说,所以我会直接说 我使用Jquery和ajax在另一个选择框更改时更新选择框。除了JSON返回时激发fail方法而不是done方法之外,所有操作都是根据JSON进行的 查看所有内容后,我确定返回的JSON无效 JSON是 { "COLUMNS": ["DESCRIPTION", "COMPUTED_COLUMN_2"], "DATA": [ ["Test; Job PD", 11], ["Test 2", 10],

我不知道该怎么说,所以我会直接说

我使用Jquery和ajax在另一个选择框更改时更新选择框。除了JSON返回时激发fail方法而不是done方法之外,所有操作都是根据JSON进行的

查看所有内容后,我确定返回的JSON无效

JSON是

{
    "COLUMNS": ["DESCRIPTION", "COMPUTED_COLUMN_2"],
    "DATA": [
        ["Test; Job PD", 11],
        ["Test 2", 10],
        ["Test 3", 00],
        ["Test 4", 20]
    ]
}
测试3的值为00。这实际上应该是字符串“00”。然而,在ColdFusion中序列化JSON的解析器似乎返回00作为一个数字。这会导致JSON转换失败并激发fail方法。这只发生在iOS和Mac上

我的问题是,我如何强制JSON中的值为字符串值而不是数字值

我的环境是:

OSX小牛队 铬 ColdFusion 10
CFWheels 1.1.8

从技术上讲,00作为JSON中的数字是无效的-请在此处的数字下进行检查: 正如meagar在上面的评论中所写,您需要将其编码为字符串


您还可以将其编码为0,因为这是整数值,并在解析数据时考虑特殊情况。

我在数据过滤器中使用js regex replace替换特殊情况

response.replace(/(00)/, '"00"');
引号很重要,因为如果您只是替换00,它会将其重新序列化为一个数字

更新:


此问题在ColdFusion update 11中由Adobe解决。非常感谢@Miguel-F指出这一点。

用引号括起来。您不能告诉JSON将值视为字符串,您必须实际修改JSON,使其成为字符串,通常在您编码数据时,使值为字符串。查询在计算列2中的数据类型是什么?我不明白为什么SerializeJSON会为实际的0输出00。除了00,其余的都可以使用。00被认为是0,最好按照@meager的想法。将字符串转换回整数很容易。如果它是字符串,则需要将其设置为字符串!我假设这是来自数据库,因为他的序列化对象与coldfusion查询的格式相同。考虑到这一点,简单地将数字转换为字符串可能就不那么简单了。在railo中,如果00当前是一个数字,则通过将00转换为0来处理此问题。如果使用sql将它们全部转换为字符串,则可以将其保留为字符串。但我希望它在sql中已经是一个字符串,因为它是00。不幸的是,我要求值作为字符串而不是数字。我在CF10中使用SerializeJSON生成JSON,因此我对编码没有任何控制权。您是否更新并验证它是否适合您?只是好奇,因为我并不总是相信他们的bug状态。