Coldfusion REST GET函数-将结构作为JSON返回

Coldfusion REST GET函数-将结构作为JSON返回,coldfusion,coldfusion-10,Coldfusion,Coldfusion 10,我是Coldfusion的绝对新手(到目前为止只有一天),我必须在工作中学习它。我来自.NET的背景,所以我试图理解所有这些 我基本上只想读取一个XML文件,并将其作为JSON返回。简单。 XML文件结构: <countries> <country code="AU" name="Australia" /> <country code="NZ" name="New Zealand" /> <country code="US" na

我是Coldfusion的绝对新手(到目前为止只有一天),我必须在工作中学习它。我来自.NET的背景,所以我试图理解所有这些

我基本上只想读取一个XML文件,并将其作为JSON返回。简单。

XML文件结构

<countries>
    <country code="AU" name="Australia" />
    <country code="NZ" name="New Zealand" />
    <country code="US" name="United States" />
    <country code="UK" name="United Kingdom" />
</countries>
使用这种技术,我在测试中得到了正确的回答,但我有一种奇怪的感觉,那就是它可能效率低下。我只是在想,创建一个新的结构并将其添加到循环中的数组(完整的xml文件大约有100个项目)可能会很笨拙

事实上,我不确定使用结构是否是最好的方法。在.NET中,我会创建一个类,然后将内容添加到它的属性中。我搜索了一些类似于类的东西,发现了一些东西,我创建了一个Countries.cfc文件:

component accessors="true" output="false"
{
    property name="code" type="string";
    property name="name" type="string";
}
我唯一的问题是,我不知道如何使用它。对于OOP,您是否使用这样的组件?还是上述“结构”方法更好

TL;博士;以上是实现这一目标的最佳方法吗?在ColdFusion中有这种东西的最佳实践吗


欢迎提供任何其他建议或建议。谢谢

在我看来,你采取的方法没有错。任何CF开发人员都会熟悉它。CF中没有原生的XML->对象映射技术(如Java中的JAXB或.NET中的XML序列化或数据绑定),因此无论您做什么,代码中的某个地方都会出现读取循环。 根据您期望国家代码列表更改的频率,您可以在应用程序范围中缓存要返回的结构,这意味着您只需解析XML一次

在回答结构/对象问题时,两者都可以正常工作。从历史上看,CF中的对象实例化成本很高,因此结构方法经常受到青睐。速度差现在不太明显,因此两者都是有效的


我个人选择对象/结构的标准是是否需要在多个位置使用数据。如果这是我将在整个应用程序中使用并可能更新的东西,那么定义一个对象是值得的。如果我只是提供特定函数所特有的只读数据,那么定义对象感觉像是开销

我只是尝试一个简单的本地测试来比较对象和结构。无论如何,这并不彻底,但我可以清楚地看到每次调用之间有50-90毫秒的差异,尽管struct的大小更大(因为xml中的属性名比我在对象中设置的更短的名称要大),但它的速度更快。如果是100个项目,那么每个对象实例化要花费0.5-1ms,在我看来,这在处理空值对象时有点大。我想在上面的列表中添加的另一条规则是,我从不考虑在业务逻辑中创建单个对象的成本,但是在循环中创建对象的情况下,您需要更仔细地考虑。您可以尝试将计时代码放入测试中,以确认这是需要时间的创建,而不是序列化,但我怀疑情况就是这样
component accessors="true" output="false"
{
    property name="code" type="string";
    property name="name" type="string";
}